keepalived+nginx搭建高可用and负载均衡集群
keepalived+nginx搭建高可用and负载均衡集群
前言
因生产环境需要,现需要搭建一个前端为nginx的HA双向互备、后端为nginx代理的loadbalance负载均衡集群。nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。
此架构需考虑的问题
1)Master没挂,则Master占有vip且nginx运行在Master上
2)Master挂了,则backup抢占vip且在backup上运行nginx服务
3)如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上
4)检测后端服务器的健康状态
Master和Backup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上,
如果要想使nginx服务挂了,vip也漂移到另一个节点,则必须用脚本或者在配置文件里面用shell命令来控制。
以下实验过程由难及易,易于上手,便于操作。
一、前期环境准备
1. 系统环境均为CentOS release 6.5 (Final)32位,均在虚拟机上成功实现。
所有的软件包均为yum方式安装,yum源均在用阿里云服务器所使用的。
为避免后续不必要的麻烦,全都关闭防火墙
本实验结构的拓扑图如下:
机器IP规划如下:
二、后端apache的安装配置
apache1:
1、安装
[root@apache1 ~]# yum install -y httpd
2、建立测试网页文件
echo "this is apache1" >/var/www/html/index.html
3、开启服务
service httpd start
apache2:
1、安装
yum -y install httpd
2、建立测试网页文件
echo "this is apache2" >/var/www/html/index.html
3、开启服务
service httpd start
Nginx安装与配置
1安装环境所需依赖包
yum -y install gcc gcc+ gcc-c++
yum install popt-devel opensslopenssl-devel libssl-dev libnl-devel popt-devel
yum install -y net-snmp.x86_64net-snmp-devel.x86_64
2.安装nginx
yum install -y nginx
3.修改nginx的配置文件
yum install -y nginx
创建自定义配置文件
mkdir /etc/nginx/conf.d/extra/
vim /etc/nginx/conf.d/extra/yang.conf
4.启动nginx
service nginx start
此时可以在浏览器测试一下,输入IP:192.168.1.135
刷新一下
这一台nginx已经配置成功,在另外一台机器上同样的方式配置nginx,这里不再赘述。
以上配置文件里的内容虽然稀少,但都是重要部分,以后用的到的功能逐渐添加。
keepalived的安装与配置
机器上安装keepalived
yum install -y keepalived
2.修改keepalived配置文件
vim/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { yangry@shiwei.com } notification_email_fromyangry@shiwei.com smtp_server mail.shiwei.com smtp_connect_timeout 30 router_id LVS_MASTER1 # 表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息 } vrrp_script chk_http_port { script "/usr/local/keepalived/nginx.sh"#### 检测nginx状态的脚本链接 interval 2 weight 2 } vrrp_instance VI_2 { #vrrp 实例 stateMASTER #MASTER/BACKUP interface eth1 ####HA 监测网络接口 virtual_router_id 51 # 虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样 priority100 # 用于主从模式,优先级主高于100,从低于100 advert_int1 # 主备之间的通告间隔秒数 authentication{ # 认证用于主从模式,mater和backup配置一样 auth_type PASS ### 主备切换时的验证 auth_pass 1111 # 密码 } track_script { chk_http_port ### 执行监控的服务 } virtual_ipaddress { 192.168.1.100 dev eth1 label eth1:0 ########### 虚拟ip } }
3.编写nginx检测脚本
vim /usr/local/keepalived/nginx.sh
if [ `ps -C nginx --no-header |wc -l` -eq 0];then
killall keepalived
fi
一定要记得赋予其可执行权限哦
chmod +x /usr/local/keepalived/nginx.sh
在另外一台backup机器上做同样操作,注意/etc/keepalived/keepalived.conf要修改的地方如下:
state BACKUP
priority 99(一定要比master的值要小)
手动添加一个虚拟IP
分别在master和backup上执行以下命令:
ifconfig eth1:0 192.168.1.100netmask 255.255.255.0 up
然后查看,就会有两个IP了
在两台机器上分别重启nginx和keepalived做测试
service nginx restart
service keepalived restart
1.在master上可以看到
在backup上可以看到
看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了。
2.当我手动把master上的nginx停掉,可以看到master日志
在看此时的backup日志
显然已经成功把vip接管过来.
自此,本实验已经成功完成。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用腾讯证书服务为Centos7+Apache申请颁发证书
使用腾讯证书服务为Centos7+Apache申请颁发证书 说到证书我们大家都知道,证书可以提高数据加密传输,但是提到证书服务的供应商,相对比较多可以根据自己的需求来定,今天我们使用腾讯的云服务平台中的证书服务来为Centos7下的Apache服务申请及分配证书,现在的第三方证书服务都现在都简化了,无需提供csr文件即可生成证书及私钥文件,所以我们无需申请相关的csr证书申请文件了,还需要注意此次过程中,我们需要有自己有公网域名,因为在申请证书的时候需要验证。具体见下: 腾讯云服务地址:https://console.qcloud.com/ 我们首先需要注册腾讯云服务账户,目前腾讯的云服务,只能通过QQ或者微信验证登陆,注册后,需要进行实名认证 我们看见腾讯云支持的服务还是相对比较多的,今天我们主要介绍的是SSL证书;所以就进入ssl证书服务 我们选择免费的证书 输入证书域名,web.ixmsoft.com 因为需要验证域名证书的域名所有者,所有还需要在公网dns中添加解析验证 我们最好在提前交验证 一下域名,在自己的域名中添加一条cname记录 所以我们就需要在自己的域名下添加一个记...
- 下一篇
Nginx之反向代理、日志格式、集群、缓存、压缩、URl 重写,读写分离配置
location的模式匹配按照优先级由低到高有以下四种: Nginx作为一个优秀的Web服务器,不仅在处理静态内容上比Apache优秀,还经常被用来做反向代理服务器,且支持缓存,URL重写,自定义格式,读写分离等功能,并且支持在TCP/IP第七层实现集群功能,基于AIO(异步I/O)event_driven(事件驱动)mmap(内存映射)等机制和功能,具有轻量级、高性能、消耗低、特性丰富、配置简单等特点 实验环境: node1:192.168.139.2 node2:192.168.139.4 node4:192.168.139.8 node5:192.168.139.9 node1、node2装有Nginx,其中node1为备用,本实验所有与Nginx相关的配置都在node2进行 node4、node5装有httpd,主要用来做后端RS_Server 1:location = URI { }花括号在的规则只对当前URI匹配,如果为目录只对目录匹配 2:location ^~URI { }不用正则表达式进行逐字符匹配 3:location ~* URI{ }不区...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题