设为首页 收藏本站
查看: 1802|回复: 0

[经验分享] keepalived+nginx搭建高可用and负载均衡集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-26 11:06:52 | 显示全部楼层 |阅读模式
前言
因生产环境需要,现需要搭建一个前端为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位,均在虚拟机上成功实现。

wKiom1hftqfxG2t1AAAGYjpikTQ080.jpg
  • 所有的软件包均为yum方式安装,yum源均在用阿里云服务器所使用的。

wKioL1hftraDorpdAAAQ9lqeEJo675.jpg
  • 为避免后续不必要的麻烦,全都关闭防火墙
  • 本实验结构的拓扑图如下:

wKioL1hfttPxmHF4AAEvSgnSbFA053.jpg
  • 机器IP规划如下:

wKiom1hftuKj30bJAAALG__xOjY227.jpg
二、后端apache的安装配置
apache1:
1、安装
[iyunv@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
wKioL1hftvmAN90NAAAcYKhhLyA794.jpg
创建自定义配置文件
mkdir /etc/nginx/conf.d/extra/
vim /etc/nginx/conf.d/extra/yang.conf
wKiom1hftw-y5lFVAAAU2YHTF8I698.jpg
4.启动nginx
service nginx start
此时可以在浏览器测试一下,输入IP:192.168.1.135
wKiom1hftyDjP6FDAAAsWr4KXTE030.jpg
刷新一下
wKioL1hfty_TO5c_AAAsMcH1MmY653.jpg
这一台nginx已经配置成功,在另外一台机器上同样的方式配置nginx,这里不再赘述。
以上配置文件里的内容虽然稀少,但都是重要部分,以后用的到的功能逐渐添加。

  • keepalived的安装与配置
  • 机器上安装keepalived

yum install -y keepalived
2.修改keepalived配置文件
vim/etc/keepalived/keepalived.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
! 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
    }
}




wKioL1hft1LTAFeGAAAyzACe_uI578.jpg
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了
wKiom1hft2bycUafAAAOJZ33tHE831.jpg
  • 在两台机器上分别重启nginx和keepalived做测试

service nginx restart
service keepalived restart
  • 1.在master上可以看到

wKioL1hft3TCvGPYAABQTQnVuI4291.jpg
在backup上可以看到
wKiom1hft4viYHSgAABAXyDxoXM998.jpg
看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了。

  • 2.当我手动把master上的nginx停掉,可以看到master日志

wKioL1hft6fz17_RAAAceX89JyM645.jpg
在看此时的backup日志
wKiom1hft7mApJmwAAAwe54SNrg211.jpg
显然已经成功把vip接管过来.
自此,本实验已经成功完成。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-319641-1-1.html 上篇帖子: haproxy+keepalived来实现mariadb galera cluster的高可用架构 下篇帖子: HAProxy介绍和相关配置演示
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表