阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

详解利用Keepalived+Nginx解决站点高可用性

155次阅读
没有评论

共计 5341 个字符,预计需要花费 14 分钟才能阅读完成。

背景:
公司官网 PV 不高,压力不大,所以公司给出两台服务器来提供官网 web 服务,毕竟是公司门面,不能出现问题!所以就需要一个轻量级 web 容灾方案!

方案:
利用 keepalived+nginx 实现官网 web 的高可用性
两台服务器一台为主,一台为备机,使两台机器公用一个虚拟 IP,当主服务器宕机,106.3.32.6 这个 IP 会自动切换到备机上,前端机恢复之后再自动切换回主服务机

详解利用 Keepalived+Nginx 解决站点高可用性

然后,主服务机和备机利用 rsync 实现实时同步数据,
rsync 的安装配置可以参照我之前的一篇文章:http://www.linuxidc.com/Linux/2013-11/92497.htm

环境:
CentOS 6.4
nginx-1.2.1
keepalived-1.2.2
一、安装
主和辅都需要安装 keepalived, 安装方法相同
yum -y install  kernel-devel
yum install openssl-* -y
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar xzf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure –prefix=/usr/local/keepalived
make && make install
ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -pv /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

加入开机启动:chkconfigkeepalived on

二、配置
主和辅配置的差别只在 stateMASTER 和 priority 100
vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
#  notification_email {#### 此处定义发生替换会邮件通知
#    cuimingkun@yinwuweiye.com
#  }
#  notification_email_from keepalived@domain.com
#  smtp_server 127.0.0.1
#  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                script “/root/shell/nginx_pid.sh” ## 监控脚本位置
                interval 2
                weight 2
}
track_script {
      chk_http_port
      }
vrrp_instance VI_1 {
    state MASTER        ##### 备机为 BACKUP
    interface em1
    virtual_router_id 51
    priority 100        ##### 备机要小于主
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        106.3.32.6  #### 虚拟 IP
    }
}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/92498p2.htm

推荐阅读

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm

PHP 中使用 Memcached 的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm

Ubuntu 下安装 Memcached 及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

三、分别在主和辅服务器上建立 nginx 的监控脚本

Keepalived 管理虚 IP 是通过组播和优先级实现的,优先级高的会拥有虚 IP 的管理权,所以要实现 IP 自动切换,只需要建立一个监控脚本,让 keepalived 进行调用,一旦发现 nginx 出现故障就 kill 掉 keepalived 的进程,让其他 keepalived 管理此 IP
vi /root/shell/nginx_pid.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`           
if [$A -eq 0];then                                   
                /usr/local/nginx/sbin/nginx
                sleep 3
                if [`ps -C nginx –no-header |wc -l` -eq 0];then
                      killall keepalived
                fi
fi

注意给脚本添加执行权限:chmod+x /root/shell/nginx_pid.sh
两台机器启动 keepalived:service keepalived start
四、测试
#ip a 查看 IP
查看主的 IP,目前虚 IP 在主这里

详解利用 Keepalived+Nginx 解决站点高可用性

Kill 掉主的 keepalived, 再查看,虚 IP 消失

详解利用 Keepalived+Nginx 解决站点高可用性

查看辅的这边,可以看到虚 IP

详解利用 Keepalived+Nginx 解决站点高可用性

再启动主的 keepalived,虚 IP 又回到主的这边

五、总结
此方案没有做负载均衡,只是做了一个故障自动切换的处理,适用于 PV 不是很高的环境(当然 Nginx 做好调优其负载能力也是很强的),不过可以以同样的原理举一反三,把他做在高并发的负载均衡器上,来实现高必发的容灾方案!

背景:
公司官网 PV 不高,压力不大,所以公司给出两台服务器来提供官网 web 服务,毕竟是公司门面,不能出现问题!所以就需要一个轻量级 web 容灾方案!

方案:
利用 keepalived+nginx 实现官网 web 的高可用性
两台服务器一台为主,一台为备机,使两台机器公用一个虚拟 IP,当主服务器宕机,106.3.32.6 这个 IP 会自动切换到备机上,前端机恢复之后再自动切换回主服务机

详解利用 Keepalived+Nginx 解决站点高可用性

然后,主服务机和备机利用 rsync 实现实时同步数据,
rsync 的安装配置可以参照我之前的一篇文章:http://www.linuxidc.com/Linux/2013-11/92497.htm

环境:
CentOS 6.4
nginx-1.2.1
keepalived-1.2.2
一、安装
主和辅都需要安装 keepalived, 安装方法相同
yum -y install  kernel-devel
yum install openssl-* -y
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar xzf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure –prefix=/usr/local/keepalived
make && make install
ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -pv /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

加入开机启动:chkconfigkeepalived on

二、配置
主和辅配置的差别只在 stateMASTER 和 priority 100
vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
#  notification_email {#### 此处定义发生替换会邮件通知
#    cuimingkun@yinwuweiye.com
#  }
#  notification_email_from keepalived@domain.com
#  smtp_server 127.0.0.1
#  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                script “/root/shell/nginx_pid.sh” ## 监控脚本位置
                interval 2
                weight 2
}
track_script {
      chk_http_port
      }
vrrp_instance VI_1 {
    state MASTER        ##### 备机为 BACKUP
    interface em1
    virtual_router_id 51
    priority 100        ##### 备机要小于主
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        106.3.32.6  #### 虚拟 IP
    }
}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/92498p2.htm

推荐阅读

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm

PHP 中使用 Memcached 的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm

Ubuntu 下安装 Memcached 及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5341字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中