keepalived+nginx集群部署

1、首先准备两个linux虚拟服务器:

192.168.132.130(服务器1)、192.168.132.132(服务器2),虚拟ip:192.168.132.131

2、nginx安装及启动:

1、首先先把linux一般要用到的组件装一下:

yum install gcc-c++:gcc是Gnu的C语言编译器,至于C++编译器,它的名字叫做g++
yum install -y pcre pcre-devel:在Nginx编译需要 PCRE(Perl Compatible Regular Expression),因为Nginx 的Rewrite模块和HTTP 核心模块会使用到PCRE正则表达式语法
yum install -y zlib zlib-devel:压缩和解压缩库
yum install -y openssl openssl-devel:是一个SSL协议的开源实现

2、官网下载nginx-1.9.9.tar.gz并传至linux服务器/usr/local下

cd /usr/local:进入目录
tar -zxvf nginx-1.9.9.tar.gz:解压
cd nginx-1.9.9:进入解压后的文件夹下
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_stub_status_module --with-http_ssl_module:使用/usr/local/nginx/nginx.conf下的配置
make:编译
make install:安装
cd /usr/local/nginx/sbin/:进入安装后的nginx文件夹
./nginx -c /usr/local/nginx/nginx.conf:指定配置文件
./nginx -s reload:启动
其他命令:
./nginx -s stop    等待nginx处理任务完毕,停止nginx进程
./nginx -s quit    先查出进程ID,再使用kill命令强制杀掉进程
./nginx -s reload   不用重启nginx,使配置文件生效(若修改了nginx.conf)
ps -ef | grep nginx    查询 nginx 进程
whereis nginx    查询nginx的安装路径
./nginx -t   检查nginx.cnf的语法是否正确

3、启动nginx后需要关掉防火墙才能访问,nginx默认监听端口号为80:

systemctl disable firewalld:永久关闭防火墙
systemctl stop firewalld:暂时关闭防火墙
systemctl status firewalld:查看防火墙状态

通过192.168.132.130或192.168.132.132访问时会到nginx的index.html,分别修改index.html使其能分清楚是哪个服务器。

3、keepalived安装与配置:

1、首先安装要用到的组件:

yum install -y curl :一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具
yum install -y libnl3-devel;提供了一套应用于Linux系统基于Netlink协议通信的API接口
yum install -y net-snmp-devel;网络管理协议,它属于TCP/IP五层协议中的应用层协议

2、下载keepalived:yum install -y keepalived

3、查看并编辑:vi /etc/keepalived/keepalived.conf

服务器1(主):

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL # 用户标识本节点的名称,通常为hostname 
   vrrp_skip_check_adv_addr
   #vrrp_strict 要注释掉否则虚拟ip访问不了
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33 # 虚拟id(vip)绑定的网卡接口,可通过ip addr查看
    virtual_router_id 51 # 虚拟路由的ID号,每个节点设置必须一样,可选择IP最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
    priority 100 # 权重,比备份服务器的大时当主服务器从宕机恢复过来时会抢占主服务器
    advert_int 1 # MASTER与BACKUP节点间同步检查的时间间隔,单位为秒
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { # 虚拟IP地址池,可以有多个IP,每个IP占一行
       192.168.132.131
    }
}

服务器2(备):

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL # 用户标识本节点的名称,通常为hostname 
   vrrp_skip_check_adv_addr
   #vrrp_strict 要注释掉否则虚拟ip访问不了
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33 # 虚拟id(vip)绑定的网卡接口,可通过ip addr查看
    virtual_router_id 51 # 虚拟路由的ID号,每个节点设置必须一样,可选择IP最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
    priority 99 # 权重,比主服务器的小
    advert_int 1 # MASTER与BACKUP节点间同步检查的时间间隔,单位为秒
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { # 虚拟IP地址池,可以有多个IP,每个IP占一行
        192.168.132.131
    }
}

4、启动:systemctl start keepalived

其他命令:

systemctl restart keepalived:重启
systemctl stop keepalived:停止
systemctl status keepalived:查看状态
tail -f /var/log/messages:查看是否启动
          通过ip addr命令查看:

服务器1:

ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:12:b1:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.132.130/24 brd 192.168.132.255 scope global noprefixroute dynamic ens33
       valid_lft 1519sec preferred_lft 1519sec
    inet 192.168.132.131/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::9b3e:6d14:d65:c286/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

服务器2:并没有192.168.132.131虚拟地址,这是因为此时主服务器权重高抢占了虚拟ip,当主服务器关闭后备份服务器会出现虚拟ip

ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:43:0a:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.132/24 brd 192.168.132.255 scope global noprefixroute dynamic ens33
valid_lft 1374sec preferred_lft 1374sec
inet6 fe80::e8b1:993c:4765:abb7/64 scope link noprefixroute
valid_lft forever preferred_lft forever

4、此时keepalived监控的是自身,要想监控nginx状态需要编写vrrp_script脚本(这样在nginx挂掉时会切换到备份服务器,nginx启动后主服务器又会抢占虚拟ip):

check_ng.sh文件如下:

#!/bin/bash
run=`ps -C nginx --no-header | wc -l`
if [ $run -eq 0 ]
then
killall keepalived
fi

【注】此文件一定要在linux下看下文件格式,在notepad编辑的为:使用vi查看文件,:set ff查看格式,如为fileformat=dos则:set fileformat=unix
将keepalived修改为:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"                  #监控服务脚步
    interval 2                    #检测时间间隔(执行脚步间隔)
    weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       192.168.132.131
    }
    track_script {     #以脚本为监控chk_nginx是前面填写的(一定要放在virtual_ipaddress 后面)
       chk_nginx
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a_sunny_a

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

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

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

打赏作者

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

抵扣说明:

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

余额充值