nginx+keepalived负载均衡可用框架(补一 keepalived安装配置-热备-(服务器层和应用层))
2016-05-31 15:10
876 查看
这里我先说说什么是热备什么是互备,自定义的莫见怪
热备:(MASTER)-(BACKUP )模式,备份机平常就是个摆设,浪费资源
互备:(MASTER、BACKUP)-(BACKUP、MASTER)模式,备份机也是主机,主机也是备份机,资源利用率高
热备又分为两种情况:
第一种情况:服务器层的热备(比如服务器宕机、keepalived宕、网络不同,这个主要针对ip及keepalived)
第二种情况:应用层(web)的热备(比如web应用端口不同,nginx进程被意外kill,这个主要针对端口)
安装步骤
1.安装依赖yum -y install gcc gcc+ gcc-c++
yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel
copy
比较重要!
2.安装keepalived
如没有wget请选安装wget
yum install wget copy
wget http://www.keepalived.org/software/keepalived-1.2.10.tar.gz tar zxvf keepalived-1.2.10.tar.gz
cd keepalived-1.2.10
./configure --prefix=/usr/local/keepalived
make
make install
wget下载、tar解压、
configure,这一步一般用来生成Makefile,为下一步的编译做准备,你可以通过在configure后加上参数来对安装进行控制
比如 ./configure --prefix=/usr/local/keepalived(安装在/usr/local/keepalived目录下)
make,这一步就是编译,大多数的源代码都经过这一步进行编译
make install ,这条命令来进行安装
3.修改配置文件路径
op
4.设置为开机启动
cop
5.MASTER和BACKUP配置文件
BACKUP的keepalived.conf
注意点
重点!!!
mcast_src_ip 192.168.51.55 #vrrp实体服务器的IP 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
copy
这个实体服务器的IP要么不设置,要么一定设置为本机IP,不然会刷新页面出现错误(具体错误忘记了)
state (MASTER与BACKUP)
virtual_router_id 必须一致
priority 主>备
advert_int 必须一致
authentication 必须一致
virtual_ipaddress 一致(一般使用虚拟ip来访问)
5.启动
service keepalived start
6.查看keepalived网卡信息
ip addr
查看keepalived成功与否主要看
interface 对应的网卡(这里是em1)是否成功获取virtual_ipaddress的值(重要!!!)
7.验证
主服务器新建页面 内容MASTER
备服务器新建页面 内容BACKUP
启动主备服务器http服务和keepalived服务
通过浏览器,输入虚拟IP地址
页面显示MASTER
关闭主服务器keepalived服务,刷新刚才虚拟IP地址
页面显示BACKUP
再次启动主服务器keepalived服务,再刷新刚才虚拟IP地址
页面显示MASTER
@上边所说的是服务器层的热备
@下边说说应用层的热备(web端口不通,nginx进程被意外kill情况下)
主要利用keepalived的track_script检测脚本的原理实现的
@主要是在服务器层基础上实现应用层的热备
@主-MASTER
@备-BACKUP
@注意:这里你是不咋一看想说不对啊,怎么主与备的state都是MASTER
1)、为什么主备的参数state都是MASTER,这里的确要设置成一样的,不然实现不了我们想要的VIP漂浮效果,当state都设置成MASTER后,会根据
priority值的大小竞争上岗来决定谁是真正的MASTER,脚本检测就是在失败的时候把权重减去响应的值,这样priority的值就会变化,由于主备priority
初始值不同,所以权重始终不会出现相同的值。例如主的priority=101,如果脚本检测80端口无法连接,就会priority-2=99,99<备priority(100),此时
备就成为主。有点小绕。
如何查看keepalived日志
tail -f /var/log/message
nginx监控脚本
当nginx服务死掉,就关掉或者杀死keepalived进程。
nginx监控脚本我放置在 /usr/local/webserver/keepalived目录下边(随便放,我是为了好记!)
copy
/etc/keepalived/keepalived.conf配置文件新增
ok
热备:(MASTER)-(BACKUP )模式,备份机平常就是个摆设,浪费资源
互备:(MASTER、BACKUP)-(BACKUP、MASTER)模式,备份机也是主机,主机也是备份机,资源利用率高
热备又分为两种情况:
第一种情况:服务器层的热备(比如服务器宕机、keepalived宕、网络不同,这个主要针对ip及keepalived)
第二种情况:应用层(web)的热备(比如web应用端口不同,nginx进程被意外kill,这个主要针对端口)
安装步骤
1.安装依赖yum -y install gcc gcc+ gcc-c++
yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel
copy
比较重要!
2.安装keepalived
如没有wget请选安装wget
yum install wget copy
wget http://www.keepalived.org/software/keepalived-1.2.10.tar.gz tar zxvf keepalived-1.2.10.tar.gz
cd keepalived-1.2.10
./configure --prefix=/usr/local/keepalived
make
make install
wget下载、tar解压、
configure,这一步一般用来生成Makefile,为下一步的编译做准备,你可以通过在configure后加上参数来对安装进行控制
比如 ./configure --prefix=/usr/local/keepalived(安装在/usr/local/keepalived目录下)
make,这一步就是编译,大多数的源代码都经过这一步进行编译
make install ,这条命令来进行安装
3.修改配置文件路径
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ mkdir /etc/keepalived cd /etc/keepalived/
vi keepalived.conf
op
global_defs { notification_email { user@example.com #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。 } notification_email_from mail@example.org #设置邮件的发送地址 smtp_server 192.168.200.1 #设置SMTP Server地址 smtp_connect_timeout 30 #设置SMTP Server的超时时间 router_id LVS_DEVEL #表示运行Keepalived服务器的一个标示。发邮件时显示邮件主题的信息 } vrrp_instance VI_1 { #vrrp实例定义部分 state MASTER #标示状态为MASTER 指定Keepalived的角色(MASTER主,BACKUP备) interface em2 #指定HA检测网络的接口 virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下的MASTER和BACKUP必须一致 priority 101 #MASTER权重要高于BACKUP 数字越大优选级越高 advert_int 1 #组播信息发送间隔,两个节点设置必须一样 mcast_src_ip 192.168.65.142 #vrrp实体服务器的IP 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip authentication { auth_type PASS #主从服务器验证方式 设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信 auth_pass 1111 } #VIP virtual_ipaddress { 192.168.65.151 #虚拟IP 可以设置多个虚拟IP地址,每行一个 } }
4.设置为开机启动
vi /etc/rc.local
#添加 #keepalived /etc/init.d/keepalived start
cop
5.MASTER和BACKUP配置文件
BACKUP的keepalived.conf
global_defs { notification_email { user@example.com #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。 } notification_email_from mail@example.org #设置邮件的发送地址 smtp_server 192.168.200.1 #设置SMTP Server地址 smtp_connect_timeout 30 #设置SMTP Server的超时时间 router_id LVS_DEVEL #表示运行Keepalived服务器的一个标示。发邮件时显示邮件主题的信息 } vrrp_instance VI_1 { #vrrp实例定义部分 state BACKUP#标示状态为MASTER 指定Keepalived的角色(MASTER主,BACKUP备) interface em1 #指定HA检测网络的接口 virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下的MASTER和BACKUP必须一致 priority 100 #MASTER权重要高于BACKUP 数字越大优选级越高 advert_int 1 #组播信息发送间隔,两个节点设置必须一样 mcast_src_ip 192.168.51.55 #vrrp实体服务器的IP 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip authentication { auth_type PASS #主从服务器验证方式 设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信 auth_pass 1111 } #VIP virtual_ipaddress { 192.168.65.151 #虚拟IP 可以设置多个虚拟IP地址,每行一个(一般使用虚拟ip来访问) } }
注意点
重点!!!
mcast_src_ip 192.168.51.55 #vrrp实体服务器的IP 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
copy
这个实体服务器的IP要么不设置,要么一定设置为本机IP,不然会刷新页面出现错误(具体错误忘记了)
state (MASTER与BACKUP)
virtual_router_id 必须一致
priority 主>备
advert_int 必须一致
authentication 必须一致
virtual_ipaddress 一致(一般使用虚拟ip来访问)
5.启动
service keepalived start
6.查看keepalived网卡信息
ip addr
查看keepalived成功与否主要看
interface 对应的网卡(这里是em1)是否成功获取virtual_ipaddress的值(重要!!!)
7.验证
主服务器新建页面 内容MASTER
备服务器新建页面 内容BACKUP
启动主备服务器http服务和keepalived服务
通过浏览器,输入虚拟IP地址
页面显示MASTER
关闭主服务器keepalived服务,刷新刚才虚拟IP地址
页面显示BACKUP
再次启动主服务器keepalived服务,再刷新刚才虚拟IP地址
页面显示MASTER
@上边所说的是服务器层的热备
@下边说说应用层的热备(web端口不通,nginx进程被意外kill情况下)
主要利用keepalived的track_script检测脚本的原理实现的
@主要是在服务器层基础上实现应用层的热备
@主-MASTER
global_defs { notification_email { user@example.com } notification_email_from mail@example.org smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } #应用层热备需要添加的内容 vrrp_script chk_http_port { script "</dev/tcp/127.0.0.1/80" interval 1 #检测脚本执行的间隔 weight -2 #权重 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 mcast_src_ip 192.168.51.75 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.51.199 } #应用层热备需要添加的内容 track_script { chk_http_port #调用检测脚本 } }
@备-BACKUP
global_defs { notification_email { user@example.com } notification_email_from mail@example.org smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } #应用层热备需要添加的内容 vrrp_script chk_http_port { script "</dev/tcp/127.0.0.1/80" interval 1 #检测脚本执行的间隔 weight -2 #权重 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 mcast_src_ip 192.168.51.75 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.51.199 } #应用层热备需要添加的内容 track_script { chk_http_port #调用检测脚本 } }
@注意:这里你是不咋一看想说不对啊,怎么主与备的state都是MASTER
1)、为什么主备的参数state都是MASTER,这里的确要设置成一样的,不然实现不了我们想要的VIP漂浮效果,当state都设置成MASTER后,会根据
priority值的大小竞争上岗来决定谁是真正的MASTER,脚本检测就是在失败的时候把权重减去响应的值,这样priority的值就会变化,由于主备priority
初始值不同,所以权重始终不会出现相同的值。例如主的priority=101,如果脚本检测80端口无法连接,就会priority-2=99,99<备priority(100),此时
备就成为主。有点小绕。
如何查看keepalived日志
tail -f /var/log/message
nginx监控脚本
当nginx服务死掉,就关掉或者杀死keepalived进程。
nginx监控脚本我放置在 /usr/local/webserver/keepalived目录下边(随便放,我是为了好记!)
#!/bin/bash while : do nginxpid=`ps -C nginx --no-header | wc -l` if [ $nginxpid -eq 0 ];then /usr/local/webserver/nginx/sbin/nginx sleep 5 nginxpid=`ps -C nginx --no-header | wc -l` echo $nginxpid if [ $nginxpid -eq 0 ];then /etc/init.d/keepalived stop fi fi sleep 5 done
copy
/etc/keepalived/keepalived.conf配置文件新增
vrrp_script chk_nginx { script "/usr/local/webserver/keepalived/check_nginx.sh" interval 1 weight -2 }copy
track_script { chk_http_port chk_nginx #调用检测新增的脚本 }
ok
相关文章推荐
- 负载均衡技术沙龙1期(关于咱的图片)
- 负载均衡沙龙活动第二期现场问答汇集
- 流量引导:网络世界的负载均衡解密
- 流量引导:网络世界的负载均衡解密
- 浅谈sqlserver的负载均衡问题
- asp.net实现负载均衡
- PHP开发负载均衡指南
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- LVS+Keepalived构建高可用负载均衡(测试篇)
- 简单测试Apache是如何完成负载均衡策略配置
- Apache负载均衡设置方法 mod_proxy使用介绍
- LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)
- Shell脚本实现把进程负载均衡到多核CPU中
- tomcat6_apache2.2_ajp 负载均衡加集群实战分享
- [Oracle] RAC 之 - 负载均衡深入解析
- windows NLB+ARR实现Web负载均衡高可用/可伸缩的方法
- haproxy+keepalived实现高可用负载均衡(理论篇)
- Keepalived+HAProxy实现MySQL高可用负载均衡的配置
- 理解web服务器和数据库的负载均衡以及反向代理
- 用apache和tomcat搭建集群(负载均衡)