KeepAlived+Nginx实现高可用负载,keepalivednginx
KeepAlived+Nginx实现高可用负载,keepalivednginx
一、环境及安装版本:
centos6.5、Nginx1.4.7、keepalived1.3.2
虚拟IP |
真是IP |
Nginx端口 |
主从分配 |
10.0.90.215 |
10.0.90.217 |
80 |
MASTER |
10.0.90.215 |
10.0.90.218 |
80 |
BACKUP |
二、Nginx安装
分别在10.0.90.217、10.0.90.218两台机器安装Nginx
1、 安装Nginx所需要的安装包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、 上传Nginx(nginx-1.4.7.tar.gz)到/usr/local/src目录
3、 编译安装Nginx
进入Nginx上传目录
# cd /usr/local/nginx
解压安装包
# tar –zxvf nginx-1.4.7.tar.gz
进入解压后的文件夹
# cd nginx-1.4.7
指定编译位置
# ./configure --prefix=/usr/local/nginx
编译安装
# make && make install
4、 配置Nginx
通过修改/conf/nginx.conf文件来修改Nginx的配置信息
# vim /usr/local/nginx/conf/nginx.conf
5、 系统防火墙中打开对应的端口80(默认80)或者关闭防火墙
# vim /etc/sysconfig/iptables
添加:
## nginx -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
添加后重启防火墙:
# service iptables restart
或者不做第5步上述配置直接关闭防火墙(不推荐)
# service iptables stop
6、 启动nginx
# /usr/local/nginx/sbin/nginx
检查是否启动成功
浏览器访问Nginx所在机器真实IP,如下显示即为成功
查看Nginx进程 # ps -ef|grep nginx 停止Nginx # /usr/local/nginx/sbin/nginx -s stop 重启Nginx # /usr/local/nginx/sbin/nginx -s reload
三、Keepalived安装(分别在10.0.90.217和10.0.90.218两台机器安装)
1、 上传或下载 keepalived(keepalived-1.3.2.tar.gz)到 /usr/local/src 目录
2、 解压安装
# cd /usr/local/src/ # tar -zxvf keepalived-1.3.2.tar.gz # ./configure --prefix=/usr/local/keepalived # make && make install
3、 将keepalived安装成Linux系统服务
因为没有使用keepalived的默认路径安装(默认是/usr/local),安装完成后,需要手动复制默认的配置文件到默认路径
# mkdir /etc/keepalived # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ ## 下面这个拷贝有时会找不到文件或文件夹导致无法复制 # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ (可能不会成功) ## 可用如下拷贝替代: # cp /usr/local/src/keepalived-1.3.2/keepalived/etc/init.d/keepalived /etc/init.d/
# 继续下面命令
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ # ln -s /usr/local/sbin/keepalived /usr/sbin/ # ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置keepalived服务开机启动
# chkconfig keepalived on
4、修改keepalived配置文件
# vim /etc/keepalived/keepalived.conf
配置如下
! Configuration File for keepalived global_defs { # keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP router_id server1 ## 标识本节点的字条串,通常为 hostname } vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" ## 检测 nginx 状态的脚本路径 interval 2 ## 检测时间间隔 weight -20 ## 如果条件成立,权重-20 } vrrp_instance VI_1 { state MASTER ## 主节点为 MASTER,对应的备份节点为 BACKUP interface eth0 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth0 virtual_router_id 146 ## 虚拟路由的 ID 号,两个节点设置必须一样 mcast_src_ip 10.0.90.218 ## 本机 IP 地址 priority 100 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高 advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s authentication { ## 设置验证信息,两个节点必须一致 auth_type PASS auth_pass 1111 } track_script { chk_nginx ## 执行 Nginx 监控的服务 } virtual_ipaddress { 10.0.90.215 ## 虚拟 ip,可以定义多个 } }View Code
check_nginx.sh脚本代码如下:
1 #!/bin/bash 2 # curl -IL http://localhost/index.htm 3 count=0 4 for (( k=0; k<2; k++ )) 5 do 6 check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/index.html -o /dev/null ) 7 if [ "$check_code" != "200" ]; then 8 count=$(expr $count + 1) 9 sleep 3 10 continue 11 else 12 count=0 13 break 14 fi 15 done 16 if [ "$count" != "0" ]; then 17 /etc/init.d/keepalived stop 18 # exit 1 19 else 20 exit 0 21 fiView Code
5、最主要的一点,为check_nginx.sh增加可执行权限,否则准备不切换并且又不报错
# chmod +x /etc/check_nginx.sh
6、 修改Nginx主页增加本机IP,以便后面主备切换查看效果
# vim /usr/local/nginx/html/index.html
7、 启动keepalived(两台机器的keepalived均需要启动)
# service keepalived start
如下显示即为成功
在启动 keepalived: [确定]
8、 启动完成后在MASTER机器运行命令
# ip add
可以看到配置的虚拟ip 10.0.90.215飘到Master上
网页访问效果
9、 停止Master服务
# service keepalived stop
10、在BACKUP机器运行
# ip add
发现虚拟IP已经飘到BUCKUP机器
网页访问效果:
KeepAlived+nginx配置完成。
KeepAlived参数详情请参考:
http://blog.csdn.net/fruler/article/details/53334082
评论暂时关闭