本次的实验拓扑图如下,这次主要是在上一篇的基础上精简一些,找出一些常见的错误,少走一些弯路
如果大佬们有更好的配置,请在留言区留言,或者加本人微信: mcy958623
请大佬们多多鞭策!!!
此次的实验目标
|
|
No one can escape
本次的实验拓扑图如下,这次主要是在上一篇的基础上精简一些,找出一些常见的错误,少走一些弯路
如果大佬们有更好的配置,请在留言区留言,或者加本人微信: mcy958623
请大佬们多多鞭策!!!
|
|
Ansible在我们运维工作中的主要工作就是帮助我们批量自动化部署一些生产上的需求。
由于Ansible是用Python开发的,是一款非常轻量级的自动化部署工具。
而且Ansible是通过SSH协议来进行管理其他机器的,我们只需要在安装Ansible的主机上编写一个SSH无密钥登陆的脚本,即可实现批量管理机器的工作。
其实自动化运维工具还有很多,比如puppet
、saltstack
、chef
、cfengine
,这些都可以说是Ansible
的前辈了。但是为什么现在大多数运维岗位的在职人员都使用的是Ansible
这款工具呢?
下面就来说一说它的优点:
|
|
这章节,我们对之前所学的MySQL进行一些练习,使用的模板是网络上使用的hellodb.sql
不过需要注意的是,这个模板过于老旧,现在我们使用的MySQL/MariaDB
的默认存储引擎都是InnoDB
存储引擎,而模板中使用的则是MyISAM
,所以我们需要手动进行修改:
|
|
|
|
这次我们使用的是MariaDB 5.5.44
将hellodb.sql导入至数据库中:
|
|
这章节,我们继续介绍HAProxy
不过这次我们将介绍如何使用HAProxy+Varnish实现WordPress的动静分离
由于实验的宿主机内存有限,这里我们就不按照拓扑图上的双varnish和图片服务器
上一节我们简单的介绍了如何使用Tomcat作为动态Web服务器
以及使用nginx/httpd服务器反向代理Tomcat和负载均衡Tomcat在这一章节,我们将介绍如何使用Tomcat自带的Clustering/Session Replication实现会话保持功能
以及使用memcached对Tomcat实现session server功能
为了能正常的实现我们这里准备的3个实验,计划准备五台虚拟机
|
|
建议每台Tomcat的内存分配的尽可能大一些,建议4GB
在操作多台机器实现一个功能/目标时,需要将其时间同步
|
|
HAProxy是一款高可用性、负载均衡基于TCP(四层)和HTTP(七层)应用的代理软件,支持虚拟主机。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。
并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
|
|
|
|
|
|
Tomat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器。由于Tomcat本身也包含了一个HTTP服务器,它可以被视作一个单独的WEB服务器。不过HTTP服务器是C语言实现的Web服务器,而Tomcat则是由Java编写。
什么是Servlet
呢? Servlet
,全称 Java Servlet,是用Java编写的服务器端程序,主要功能在于交互式的浏览和修改数据,生成动态Web内容。
JSP代码运行过程
index.jsp –> 由jasper转换 –> index_jsp.java –> 通过javac编译器 –> 生成类文件 index_jsp.class –> 在(engine上)jvm虚拟机上运行
基于jsp将静态输出的数据转为java代码进行输出,结果为Servlet规范的代码
Java代码运行过程
.java –> javac –> .class(bytecode字节码)
JVM运行时区域
|
|
Varnish是反向HTTP代理,也是HTTP加速器或者Web加速器。
Varnish不仅仅是缓存内容以加速器服务器的反向HTTP代理。根据实际情况,Varnish也可以用作:
Web应用程序防火墙
DDoS攻击防御器
负载均衡器
HTTP路由器
Varnish
的优势:
Varnish的稳定性很高,与Squid相比,在运行在相同负荷的情况下,Squid服务器发生故障的几率要高于Varnish。
Varnish的访问速度更快,因为所有缓存数据都可以直接从内存读取,也可以从硬盘读取;比Squid更为灵活、
Varnish支持更多的并发连接。只需要调整thread_pools与thread_pool_max的值即可,不过要根据实际情况的CPU核心数以及服务器要被用来做什么而定。
Varnish
的劣势:
一旦Varnish遇到Crash或者重启进程,所有的缓存数据都会从内存中完全释放,此时所有的访问都不会被缓存命中,而请求都会被发送到后端服务器,在高并发的情况下,后端服务器很可能因此崩溃掉。
解决方案:
在访问量很大的情况下,我们可以使用Varnish的内存缓存方式,而且后端要配置多台Squid服务器。防止前端Varnish服务重启、服务器重启或者不可预知的误操作情况下,大量请求穿透Varnish,这样Squid可以充当第二层缓存。
也可以通过Keepalived+varnish+rsync+inotify达到高可用的状态,这样在主节点不繁忙的时候,将缓存的信息同步到另一台备用缓存服务器上。为了尽可能的利用资源,我们可以将两台varnish配置成”双主模式”
当公司需要实现内部Web网站对外提供服务时,为了提高用户体验,要尽可能的保证Web站点的可用性。这时,我们就需要对Web系统做高可用(High Availability),计划使用两台Nginx做HA,通过使用keepalived工具达到我们的目的。
但是解决办法不只有Nginx+Keepalived,也可以使用LVS+Keealived,不过在中小型以及不是特别大型的企业,是基本没有使用LVS做负载均衡的,这里我们只做简单的介绍。
在之前的章节,我们已经说过如何对Nginx配置反向代理以及负载均衡的配置,这里就不过多介绍了。
Keepalived
是一个基于vrrp
协议来实现的服务器高可用解决方案,可以利用其实现避免IP单点故障,类似的工具还有heartbeat
、corosync
。不过其不会单独出现,而是搭配着 LVS、Nginx、HAproxy,一起协同工作达到高可用的目的。
VRRP
全称Vritual Router Redundancy Protocol,虚拟路由冗余协议。通过把几台提供路由功能的设备组成一个虚拟路由设备,使用一定的机制保证虚拟路由的高可用,从而达到保持业务的连续性与可靠性。
在这组成的一个虚拟路由器中,有master
和backup
之分。master是主节点,在一个虚拟路由器中,只能有一个master,但可以有多个backup;backup是备用节点,也就是当master挂掉之后,backup接手master节点的所有资源,当有多个backup节点时,根据其priority
(优先级)的值的大小,来选择谁作为master的替代者。当backup节点的优先级值相同时,根据其IP地址的大小,来决定。
一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。
负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,
客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。
客户程序不受服务器集群的影响不需作任何修改。
系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。
由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。
在1998年5月,章博士成立了Linux Virtual Server的自由软件项目,进行Linux服务器集群的开发工作。同时,Linux Virtual Server项目是国内最早出现的自由软件项目之一。
Linux Virtual Server项目的目标
:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。