nginx+keepalived实现双机热备高可用性
来源:互联网 发布:多益网络搬迁后新地址 编辑:程序博客网 时间:2024/05/21 10:19
搭建准备:
机器两台 ip分别为192.168.100.128 192.168.100.129(可以用虚拟机测试,虚拟机网络模式为NET模式,且为静态ip)
另外需要准备一个虚拟ip对外提供服务,即通过该ip访问web程序。(keepalive会将虚拟ip绑定到两台机器上)keepalived的核心原理是vrrp协议,英文好可以查看最新协议RFC3768。
1.nginx安装
两台机器都需要安装,可以参考我的上篇博文 Linux tar包安装Nginx http://blog.csdn.net/caicongyang/article/details/46388845
2.安装keepalived (两台机器都要安装,并且都要做如下操作!)
下载最新版本的keepalived-1.2.17.tar.gz 下载地址:http://www.keepalived.org/download.html
将文件上传到/usr/local/目录下
#tar -zxvf keepalived-1.2.17.tar.gz
将解压出来的文件夹重命名
#mv keepalived-1.2.17 keeplived
进入文件夹,编译安装
#cd keepalived#./configure --prefix=/usr/local/keepalived#make && make install
修改配置文件 /usr/local/keepalived/etc/keepalived/keepalived.conf
主机器配置文件如下:
global_defs {notification_email {1491318829@qq.com #接收警报的email地址,可以添加多个}notification_email_from admin@caicongyang.com ###发件人地址smtp_server 127.0.0.1 ###发送邮件的服务器smtp_connect_timeout 30 ###超时时间router_id LVS_DEVEL ####load balancer 的标识 ID,用于email警报}vrrp_script chk_http_port {script “/opt/nginx_pid.sh” ####检测nginx状态的脚本路径interval 2weight -20}vrrp_instance VI_1 {state MASTER ############ 辅机为 BACKUPinterface eth0 ####HA 监测网络接口 此项默认为eth0,因为本人在虚拟机下做测试所以将其改为eth2,可以用ifconfingvirtual_router_id 51 #主、备机的 virtual_router_id 必须相同mcast_src_ip 192.168.100.128 ###本机IP地址priority 100 ########### 权值要比 back 高advert_int 1 #主备之间的通告间隔秒数authentication {auth_type PASS ###默认配置 主备切换时的验证 auth_pass 1111}track_script {chk_http_port ### 执行监控的服务}virtual_ipaddress {192.168.100.133/24 ####虚拟ip,vip的地址}}
backup机器配置文件
global_defs {notification_email {1491318829@qq.com #接收警报的email地址,可以添加多个}notification_email_from admin@caicongyang.com ###发件人地址smtp_server 127.0.0.1 ###发送邮件的服务器smtp_connect_timeout 30 ###超时时间router_id LVS_DEVEL ####load balancer 的标识 ID,用于email警报}vrrp_script chk_http_port {script “/opt/nginx_pid.sh” ####检测nginx状态的脚本路径interval 2weight -20}vrrp_instance VI_1 {state BACKUP ############ 辅机为 BACKUPinterface eth2 ####HA 监测网络接口 注意,此项默认为eth0,因为本人在虚拟机下做测试所以将其改为eth2,可以先查看自己的网络端口virtual_router_id 51 #主、备机的 virtual_router_id 必须相同mcast_src_ip 192.168.100.129 ###本机IP地址priority 90 ########### 权值要比 back 高advert_int 1 #主备之间的通告间隔秒数authentication {auth_type PASS ###主备切换时的验证auth_pass 1111}track_script {chk_http_port ### 执行监控的服务}virtual_ipaddress {192.168.100.133/24 ####虚拟ip,vip的地址}}将keepalived安装成Linux系统服务
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ #cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ #mkdir /etc/keepalived #cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
设置开机启动服务
# chkconfig --level 2345 keepalived on
在/opt/下编写校验脚本,/opt/nginx_pid.sh(已配置在keepalived.conf中)
nginx_pid.sh :如果nginx停止运行,尝试启动,如果无法启动杀死本机keepalived进程,keepalied将虚拟ip绑定到备用机器上
建议脚本用vi或者vim在linux下编辑,因为linux的换行符和windows的不同,如果在windowsx下编辑,在传上去可能没法用!
#!/bin/bashA=`ps -C nginx -–no-header |wc -l`if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx ##这个地方写你nginx启动命令的路径sleep 3if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi
测试:
分别启动两台机器上nginx 和 keepalived
利用命令查看虚拟ip是否绑定成功
#ip a
主机的结果是
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ff:ca:24 brd ff:ff:ff:ff:ff:ff inet 192.168.100.128/24 brd 192.168.100.255 scope global eth1 <span style="color:#ff6666;">inet 192.168.100.133/32 scope global eth1</span> inet6 fe80::20c:29ff:feff:ca24/64 scope link valid_lft forever preferred_lft forever
可以看到 虚拟IP 192.168.100.133已经绑定到128的机器上了
另外可以利用杀死主服务的nginx进程,访问192.168.100.133是否依然能够访问web页面,再次利用#ip a 命令查看备用机器虚拟ip是否绑定成功!
也可以用下面的命令查看keepalived启动过程日志
#tail -f /var/log/messages
后记:双机热备模式虽然可用性高,但是有一台机器处于被分在状态,资源有点浪费。楼主将在下篇文章配置双机互为双主的模式。
不懂运维的程序员,不是好的工程师!
我的个人网站:http://www.caicongyang.com
我的CSDN博客地址: http://blog.csdn.net/caicongyang
- nginx+keepalived实现双机热备高可用性
- nginx+keepalived实现双机双主高可用性
- keepalived+nginx实现双机热备
- keepalived+nginx实现双机热备
- nginx+keepalived实现双机热备
- keepalived+nginx实现双机热备
- nginx+keepalived实现双机热备
- Nginx+keepalived实现双机热备部署
- Nginx+keepalived+tomcat实现tomcat高可用性负载均衡
- Nginx+keepalived+tomcat实现tomcat高可用性负载均衡
- Nginx+keepalived实现负载均衡和高可用性 in ubuntu
- Keepalived + nginx实现高可用性和负载均衡
- Keepalived + nginx实现高可用性和负载均衡
- Keepalived + nginx实现高可用性和负载均衡
- Keepalived + nginx实现高可用性和负载均衡
- centos7+LVS+KeepAlived实现Nginx服务的高可用性
- Keepalived + nginx实现高可用性和负载均衡
- nginx + keepalived 实现高可用性和负载均衡
- 如何将数组的键都变为大写-php
- 修改hadoop FileUtil.java,解决权限检查的问题
- 视图局部中,父类设置为不可见,则子类也不可见,即便在代码中 有意设置子类可见 也不行。
- 测试
- (译文)The Linux Programming Interface:第1章(历史和标准)
- nginx+keepalived实现双机热备高可用性
- enq TX row lock contention 锁等待事件解决案例一起
- {00024500-0000-0000-C000-000000000046} ...800703fa 试图在标记为删除的注册表项上进行不合法的操作。 (异常来自 HRESULT:0x800703FA)
- qq在线客服临时会话无需好友功能
- 课题第一天
- 获取 iPhone 设备上 /var/mobile/Library/Logs/CrashReporter 中的 Crash 报告文件
- sqlserver存储过程笔记
- mysql 更新sql脚本: you are using safe update mode and you tried to update a table
- 横屏代码: