基于nginx+keepalived 的主从热备负载均衡的反向代理实现

基于nginx+keepalived 的主从热备负载均衡的反向代理实现

一、操作环境介绍

公司内部网络环境,台式主机上的两台虚拟机使用桥接网络,无法连接互联网。

(1)虚拟机ip :192.168.13.172   192.168.13.173   

         主机ip     :192.168.13.148

(2)VMware 安装CentOS 7 操作环境

(3)keepalived 版本 2.1.5

(4)nginx 版本 1.10.0

二、离线安装

离线安装keepalived+nginx 安装包点击超链接获取,也可从官网直接下载。在安装软件之前我们需要先安装gcc 依赖nginx依赖以及网络测试telnet 相关依赖(已经安装可忽略),安装完成之后,我们的linux环境已经具备安装keepalived + nginx 实现主从热备负载均衡的反向代理功能了。

1、安装gcc、nginx、telnet相关依赖

     将下载好的安装包上传到172和173 服务器上/usr/tmp/repo/gcc 目录中(目录可自定义,截图仅供参考),执行命令:

rpm -Uvh *.rpm --nodeps --force

。等待全部安装完成,进行下一步,安装nginx。

2、安装nginx

(1)上传nginx-1.10.0.tar.gz  到/opt/nginx/目录下,执行

 tar -zxvf nginx-1.10.0.tar.gz 

,当前目录下会生成 nginx-1.10.0 解压目录。

(2)配置nginx安装选项 ,我这里只配置安装到/opt目录下,其它选项可执行./configuration –help查看。
cd nginx安装目录,执行如下命令:

./configure --prefix=/opt/nginx/nginx-1.10.0/install --sbin-path=/usr/bin/nginx

官网参数配置说明:http://nginx.org/en/docs/configure.html

(3)编译并安装,执行如下命令:

make && make install

(4)进入sbin目录,启动、停止、重启nginx

#进入nginx的sbin 目录
cd /opt/nginx/nginx-1.10.0/install/sbin
#启动nginx
./nginx
#停止nginx
./nginx -s stop
#重启nginx
./nginx -s reload
#查看nginx 运行情况
ps -ef | grep nginx

截图中为nginx 的work进程和master 进程,nginx默认配置启动成功后,会有两个进程,一个主进程(master守护进程),一个工作(work)进程。主进程负责管理工作进程,工作进程负责处理用户的http请求。

 

(5)配置nginx 开机启动

如果在(2)中 配置了 --sbin-path=/usr/bin/nginx ,那么把/usr/bin/nginx 命令添加到/etc/rc.d/rc.local 文件中,rc.local 文件会在系统启动的时候执行,但CentOS 建议将开机启服务写成服务描述文件添加到系统服务中,所以rc.local默认没有执行权限,需要给他添加执行权限

#添加开机启动配置
vim /etc/rc.d/rc.local
#添加如下参数
/usr/bin/nginx
#保存退出之后给rc.local文件添加执行权限
chmod +x /etc/rc.d/rc.local

如果在(2)中没有配置 --sbin-path=/usr/bin/nginx,那么把  nginx安装目录下的执行文件路径添加到/etc/rc.d/rc.local文件中

#添加开机启动配置
vim /etc/rc.d/rc.local
#添加如下参数
/opt/nginx/nginx-1.10.0/install/sbin/nginx
#保存退出之后给rc.local文件添加执行权限
chmod +x /etc/rc.d/rc.local

(6)修改nginx.conf配置文件

#进入nginx配置路径
cd /opt/nginx/nginx-1.10.0/install/conf
vim nginx.conf

两个代理服务器都添加服务端 配置,如果不通过代理,我的访问地址是http://192.168.13.148:7211/quartz和http://192.168.13.148:7210/quartz。

3、安装keepalived

(1) 上传keepalived-2.1.5.tar.gz  到/opt/nginx/目录下(我都上传到了这里),执行

tar -zxvf keepalived-2.1.5.tar.gz

在当前路径下生成keepalived-2.1.5 目录

(2)切入到keepalived 生成目录,执行编译配置操作:

#
./configure --prefix=/opt/nginx/keepalived-2.1.5/keepalived

(3) 再安装 :

make && make install
#执行成功之后会在/opt/nginx/keepalived-2.1.5 路径下生成keepalived 目录,keepalived 就安装到了这里

(4)设置keepalived 开机启动

cp /opt/nginx/keepalived-2.15/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived
#创建keepalived 文件夹
mkdir /etc/keepalived
#复制配置文件
cp /opt/nginx/keepalived-2.15/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf

#添加keepalived 服务
chkconfig -add keepalived

# 设置开机启动
chkconfig keepalived on
#查看开机启动列表
chkconfig --list
#启动、停止keepalived 服务
service keepalived start/stop

(5)修改配置文件,启动主从热备,挂上虚拟ip,监听nginx运行情况等

#切入到keepalived 配置文件路径
cd /opt/nginx/keepalived-2.1.5/keepalived/etc/keepalived
#修改keepalived.conf
vim keepalived.conf

我们对配置文件简单介绍一下:

红色部分是需要我们自己添加的部分,主要负责keepalived 对nginx的监控,蓝色部分需要我们去修改

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_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

# 添加监控nginx 的脚本,主从都要有
vrrp_script chk_http_port {
        script "/opt/nginx/chk_nginx.sh"   #监控nginx 运行状态的脚本
        interval 2                         #每两秒钟监控一次
        weight -5                          #nginx挂机,keepalived 权重值下降5
        fall 2
        rise 1
}

vrrp_instance VI_1 {
    state MASTER                          #主机为MASTER,从机为BACKUP
    interface ens33                       #服务器联网网卡
    virtual_router_id 51                  #keepalived 组id,一组主从keepalived ,值一致
    priority 101                          #权重,越大就会优先分配访问
    advert_int 1
    authentication {                       #主从热备通讯方式和密码,主从必须一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                    #VIP,对外虚拟ip,可根据keepalived 和nginx的运行                                               状态而漂移,主从一致
        192.168.13.16
        192.168.13.17
        192.168.13.18
    }
    #添加keepalived 监控nginx 模块,引用上面的chk_http_port 模块
    track_script {
        chk_http_port
    }
}

4、访问

上面我们通过keepalived设置了虚拟ip,并且我们代理的地址是http://192.168.13.148:7210/quartz 和 http://192.168.13.148:7211/quartz两个服务

访问方式,在浏览器中输入 http://192.168.13.16,直接就会跳转到我们上面的两个地址:

6、测试是否为主从热备和负载均衡,可以自行关闭服务端程序,自行关闭nginx进程,自行关闭keepalived进程,去测试观察,我这边都做过测试,没有问题。希望你顺利。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值