采用keepalived搭建nginx一主一从

采用keepalived搭建nginx一主一从

一、Keepalived作用

LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS 仍然会把请求转发给故障的rs服务器,这样就会导致请求的无效性。keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。

二、环境信息

主机作用
192.168.2.131Nginx主服务器
192.168.2.102Nginx备服务器
192.168.2.136Lvs 虚拟VIP

需要两台服务器,192.168.2.131和192.168.2.102,其中192.168.2.136为虚拟ip

三、安装Nginx

基于centeros环境下安装。192.168.2.131和192.168.2.102都需要安装nginx。

  1. 安装gcc gcc-c++(如新环境,未安装请先安装)

    yum install -y gcc gcc-c++
    
  2. 安装wget

    yum -y install wget
    
  3. 安装PCRE库

    cd /usr/local/
    wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
    tar -zxvf pcre-8.33.tar.gz
    cd pcre-8.33
    ./configure
    make && make install
    

    如果在执行 wget 命令提示 -bash: wget: command not found 错误:

    yum -y install wget
    
  4. 安装SSL库

    cd /usr/local/
    wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
    tar -zxvf openssl-1.0.1j.tar.gz
    cd openssl-1.0.1j
    ./config
    make && make install
    
  5. 安装zlib库

    cd /usr/local/
    wget http://zlib.net/zlib-1.2.11.tar.gz
    tar -zxvf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    ./configure
    make && make install
    
  6. 安装nginx

    cd /usr/local/
    wget http://nginx.org/download/nginx-1.8.0.tar.gz
    tar -zxvf nginx-1.8.0.tar.gz
    cd nginx-1.8.0
    ./configure
    make && make install
    
  7. nginx基本操作

    启动nginx
    /usr/local/nginx/sbin/nginx
    关闭nginx
    /usr/local/nginx/sbin/nginx -s stop
    
  8. 这里为了方便区别服务的显示,可以改下nginx/html/index.html,启动效果如下
    在这里插入图片描述
    在这里插入图片描述

四、安装keepalived

192.168.2.131和192.168.2.102也都需要安装keepalived。

  1. 下载keepalived

    wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
    
  2. 解压安装:

    tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
    
  3. 下载插件openssl

    yum install -y openssl openssl-devel(需要安装一个软件包)
    
  4. 编译keepalived

    cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
    
  5. make

    make && make install
    

如果执行./configure --prefix=/usr/local/keepalived时报错:

configure: error: Popt libraries is required

因为未安装popt的开发包

yum install popt-devel

重新./configure

  1. 将keepalived安装成Linux系统服务,首先创建文件夹,将keepalived配置文件进行复制。

    mkdir /etc/keepalived
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    
  2. 复制keepalived脚本文件

    cp /usr/local/keepalived/etc/rc.d/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/
    
  3. 设置开机启动

    chkconfig keepalived on
    
  4. keepalived 常用命令

    启动
    service keepalived start
    停止
    service keepalived stop
    

如果启动报错Starting keepalived (via systemctl):
Job for keepalived.service failed. See ‘systemctl status keepalived.service’ and ‘journalctl -xn’ for details.
解决办法:

cd /usr/sbin/
rm -f keepalived
cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/

五、使用keepalived虚拟VIP

两台主备服务器都要修改 /etc/keepalived/keepalived.conf文件

nano /etc/keepalived/keepalived.conf
  1. 主服务器

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {   #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱
         1605834520@qq.com   #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
         1605834520@qq.com
       }
       notification_email_from xiaochong@then.com  #keepalived在发生诸如切换操作时需要发送email通知地址
       smtp_server 127.0.0.1                        #指定发送email的smtp服务器
       smtp_connect_timeout 30                      #设置连接smtp server的超时时间
       router_id HAmaster-130   #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
    }
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
        interval 2 #检测时间间隔
        weight -20 #如果条件成立的话,则权重 -20
    }
    # 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
        state MASTER #来决定主从
        interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
        virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
        mcast_src_ip 192.168.2.131 #填写本机ip
        priority 100 # 节点优先级,主要比从节点优先级高
        nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 将 track_script 块加入 instance 配置块
        track_script {
            chk_nginx #执行 Nginx 监控的服务
        }
    
        virtual_ipaddress {
            192.168.2.136 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        }
    }
    
  2. 从服务器

    
    ! Configuration File for keepalived
    global_defs {
       notification_email {   #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱
         1605834520@qq.com   #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
         1605834520@qq.com
       }
       notification_email_from xiaochong@then.com  #keepalived在发生诸如切换操作时需要发送email通知地址
       smtp_server 127.0.0.1                        #指定发送email的smtp服务器
       smtp_connect_timeout 30                      #设置连接smtp server的超时时间
       router_id HAmaster-130   #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
    }
    
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
        interval 2 #检测时间间隔
        weight -20 #如果条件成立的话,则权重 -20
    }
    # 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
        ###MASTER 主的意思  BACKUP 从
        state BACKUP #来决定主从
        interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
        virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
        mcast_src_ip 192.168.2.102 #填写本机ip
        priority 99 # 节点优先级,主要比从节点优先级高
        nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 将 track_script 块加入 instance 配置块
        track_script {
            chk_nginx #执行 Nginx 监控的服务
        }
        ### 虚拟IP地址配置规范 假设192.168.212.143 
        virtual_ipaddress {
            192.168.2.136 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        }
    }
    

六、测试

分别启动两台服务器的Nginx和keepalived。

浏览器输入192.168.2.136,便进入主服务器192.168.2.131的Nginx:
在这里插入图片描述

然后将主服务器的keepalived停掉后,在此在浏览器访问192.168.2.136,便进入从服务器192.168.2.102的Nginx:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小毕超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值