nginx使用keepalived实现高可用
2016-06-10 23:55
686 查看
环境:
主:linux-node1 110.0.0.137 备:linux-node2 110.0.0.138 VIP: 110.0.0.120NGINX安装:
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm # yum install nginx1.安装keepalived
<pre><code> # yum -y install kernel-devel make gcc openssl-devel libnl* popt*# yum install -y openssl openssl-devel
# wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz # tar zxf keepalived-1.2.2.tar.gz # cd keepalived-1.2.2 # ./configure --prefix=/usr/local/keepalived # make && make install # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ # cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ /bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ # chmod +x /etc/init.d/keepalived # mkdir /etc/keepalived # /bin/cp /usr/local/sbin/keepalived /usr/sbin/ # ll /usr/sbin/ </code></pre>2.配置keepalived
2.1.配置主nginx(linux-node1) [root@linux-node1 ~]# cat /etc/keepalived/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_http_port { script "/opt/nginx_pid.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 mcast_src_ip 110.0.0.137 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 110.0.0.120 } } 2.2.配置从nginx(linux-node2) [root@linux-node2 keepalived]# cat /etc/keepalived/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_http_port { script "/opt/nginx_pid.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 mcast_src_ip 110.0.0.138 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 110.0.0.120 } }3.编写nginx检查脚本(主备都需要):
#!/bin/bash A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /etc/init.d/nginx start sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then /etc/init.d/keepalived stop fi fi4.启动nginx和keepalived
/etc/init.d/nginx start /etc/init.d/keepalived start5.检查虚拟化IP 是否绑定成功
主节点: 可以看到vip 110.0.0.120 已经绑定到主的nginx服务器上了。6.测试:
停止nginx # /etc/init.d/nginx stop 发现主的nginx无法停止,因为/opt/nginx_pid.sh 会检查nginx状态,如果nginx停止了,那么这个脚本就会自动启动nginx。如果nginx启动失败,那么会立刻停止keepalived,把vip转移到backup nginx上面 我们把nginx的配置文件设置错误,然后停止nginx,这个主的nginx就无法启动了。 检查主nginx机器ip状态: 检查backup nginx主机状态: 看到VIP已经转移到backup主机上了。相关文章推荐
- Nginx优化思路
- nginx location配置详细解释
- 关于一些对location认识的误区
- 在CentOS 7中安装nginx服务器
- nginx 配置优化的几个参数
- nginx负载均衡简单配置
- ] keepalived+nginx双机热备+负载均衡
- nginx负载均衡简单配置
- Nginx负载均衡
- Nginx 常用全局变量 及Rewrite规则详解
- Nginx 常用全局变量
- mac下Nginx+lua模块编译安装
- nginx 笔记
- amazon aws ec云Linux ami上安装配置Nginx+PHP+MySQL环境
- Nginx 常用全局变量 及Rewrite规则详解
- nginx 如何绑定域名
- nginx 启动、重启、关闭
- SELinux 对nginx访问目录的影响
- [转]nginx启动期都做了哪些事
- Nginx笔记