nginx+keepalived实现HA
2016-12-27 13:03
218 查看
nginx+keepalived实现HA
版本号:Linux系统:CentOS 6.8
nginx:1.10.2
keepalived:1.3.2
首先通过官网下载nginx和keepalived
在http://nginx.org/下载nginx最新版本,当前最新版本nginx-1.11.7,稳定版本1.10.2.
在http://www.keepalived.org/下载keepalived最新版本,当前时间的最新版本为1.3.2
安装nginx
将下载的nginx-1.10.2.tar.gz通过ftp放在centos系统下。运行 tar -zxvf nginx-1.10.2.tar.gz解压
cd nginx-1.10.2
./configure (需安装gcc,通过yum install gcc)
此提示需要安装pcre-devel,可以通过yum install pcre-devel获取
此提示需要安装zlib-devel,可以通过yum install zlib-devel获取
运行./configure
出现如图所示,nginx位置在/usr/local/nginx
运行make install
通过./usr/local/nginx/sbin/nginx运行nginx
通过/usr/local/nginx/conf/nginx.conf修改nginx的配置
nginx添加开机启动
在/etc/init.d中添加nginx文件,内容如下:
# nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it's not for everyone. # processname: nginx # pidfile: /var/nginx/nginx.pid # config: /etc/nginx/nginx.conf nginxd=/usr/sbin/nginx #这里写nginx执行程序位置 nginx_config=/etc/nginx/nginx.conf #这里写nginx配置文件位置 nginx_pid=/var/nginx/nginx.pid RETVAL=0 prog="nginx" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 # Start nginx daemons functions. start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } # Stop nginx daemons functions. stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -rf /var/lock/subsys/nginx /var/run/nginx.pid } # reload nginx service functions. reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL
chmod +x /etc/init.d/nginx,为nginx添加可执行权限
chkconfig –add nginx 添加nginx到service服务中。
chkconfig nginx on 添加开机启动
执行service nginx start,查看结果。
安装keepalived
tar -zxvf keepalived-1.3.2.tar.gz解压相应文件cd keepalived-1.3.2,进入解压文件夹中
./configure –prefix=/usr/local/keepalived
出现这个提示,则需要安装openssl-devel(运行 yum install openssl-devel)
成功则出现上面提示
make && make install
此时成功安装keepalived
运行keepalived
/usr/local/keepalived/sbin/keepalived为运行文件(默认配置文件位置为:/etc/keepalived/keepalived.conf,因此不修改配置的情况下,需要将/usr/local/keepalived/etc/keepalived/keepalived.conf复制过去.)
keepalived.conf配置如下
! Configuration File for keepalived global_defs { notification_email { sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/home/check_nginx.sh" #监听nginx的脚本位置 interval 2 weight 2 } vrrp_instance VI_1 { state MASTER #BACKUP/MASTER interface eth0 #监听网卡配置 virtual_router_id 50 #此处所有keepalived应该一样 mcast_src_ip 192.168.0.244 #本机IP地址 priority 99 #此处BACKUP应该比MASTER值低 advert_int 1 authentication { auth_type PASS #认证方式 auth_pass 111111 #认证密码 } track_script { chk_nginx #执行监测nginx脚本 } virtual_ipaddress { 192.168.0.240/24 #虚拟IP地址 } }
在/home中添加check_nginx.sh文件,并添加执行权限
chmod +x check_nginx.sh添加执行权限
check_nginx.sh代码:
#!/bin/bash # 监控脚本功能概述:首先检查进程中的nginx进程数目,如果不存在(即为0),则表示nginx未开启,然后开启nginx,3秒后重新检查nginx进程数,若仍为0, # 则表示nginx无法正常启动,此时强制停止keepalived进程,让虚拟ip切换到backup服务器上 A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A(注意:这里不是单引号,而是主键盘数字1左边的键"点") if [ $A -eq 0 ]; then ## 如果没有nginx进程,即值为零 /usr/local/nginx/sbin/nginx sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then pkill keepalived ## 则结束 keepalived 进程,使得服务器切换到BACKUP服务器上 fi fi
./usr/local/keepalived/sbin/keepalived启动keepalived
测试结果:
在每一台机器中的/usr/local/nginx/html/index.html中添加一段标识码<p><em>This is 192.168.0.241</em></p>
<p><em>This is 192.168.0.242</em></p>
<p><em>This is 192.168.0.244</em></p>
启动nginx,启动keepalived。
在浏览器上打开192.168.0.240
关闭MASTER上的keepalived,模拟机器挂掉
在master的机器上执行pkill keepalived
重新访问,结果如下:
可以得知:
当master挂掉之后,priority值高的将接管。
当master没挂,备用机冗机不影响。
这时候就组成了基本的nginx+keepalived集群。
相关文章推荐
- Nginx+Keepalived 实现HA功能
- Keepalived+Nginx实现高可用(HA)
- cool-2018-03-09-lvs+nginx+keepalived实现高可用HA和负载均衡
- nginx+keepalived简单实现双击热备-高可用HA
- Keepalived+Nginx实现高可用(HA)
- 使用Keepalived配置主从热备实现Nginx高可用(HA)
- Keepalived+Nginx实现高可用(HA)
- nginx+keepalived实现HA 的双负载均衡
- 利用keepalived实现高可靠(HA)配置nginx 的
- Keepalived+Nginx实现高可用(HA)
- Keepalived+Nginx实现高可用(HA)
- nginx(负载均衡)+keepalived(HA) 实现双备
- Nginx + keepalived 实现高可用HA 【双主架构】
- 详解Keepalived+Nginx实现高可用(HA)
- Nginx + keepalived 实现高可用HA 【主从架构】
- Keepalived+Nginx实现高可用(HA)
- Nginx+Keepalived 实现反代 负载均衡 高可用(HA)配置
- Keepalived+Nginx实现高可用(HA)
- keepalived +nginx 实现HA 高可用的负载均衡
- nginx + keepalived 实现HA 主从模式