最近在离线环境下做 nginx+keepalived 实现高可用的负载均衡,离线环境下安装真的是十分费劲。以下就以centos7为例安装 keepalived-1.2.18 + nginx1.14.1。
1、我们需要nginx的rpm包,在官网下载 http://nginx.org/en/download.html 。不了解 rpm 的同学可以自行百度。
2、安装keepalived服务需要用的gcc ,所以需要准备gcc的包 ,在http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ 下载如下包
3、准备 keepalived的包 http://www.keepalived.org/download.html
4、直接下载我整理好的 keepalived-1.2.18 + nginx1.14.1 + gcc
当三个包准备好了就可以安装啦,我在虚拟机上克隆了3台虚拟机 分别是
虚拟IP | 真实IP | nginx端口 | 主从 |
192.168.71.130 | 192.168.71.128 | 80 | MASTER |
192.168.71.130 | 192.168.71.129 | 80 | BACKUP |
xshell root用户 连接 192.168.71.128 执行以下操作
1 、在root目录新建 nginx_rpm,将nginx安装包用xftp传入
2、rpm -ivh 安装rpm包
3、 whereis nginx 显示nginx 安装位置(/usr/sbin/nginx 启动文件;/etc/nginx 配置目录)
4、启动nginx
5、浏览器验证
6、若本机浏览器无法访问,但本机可以ping通xuni虚拟机IP,需要开启防火墙的80端口,或者关闭防火墙
7、在 192.168.8.129 中按照同样的步骤按照nginx。
二、安装keepalived
1、192.168.71.128 root目录下新建keepalived_filewenj文件夹,传入 keepalived 安装包 ; 并解压安装包。
2、验证 gcc 是否存在 (gcc -v );若不存在安装gcc:
2.1 上传gcc rpm文件
2.2 安装rpm包
2.3 验证 gcc 安装
3、进入 keepalived目录编译
4、将keepalived安装成Linux系统服务
因为没有使用keepalived的默认路径安装(默认是/usr/local),安装完成后,需要手动复制默认的配置文件到默认路径# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制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/
最后一个连接不上,提示文件存在,可先删除,在连接
5、设置keepalived 开机启动
6、修改keepalived配置文件 /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01 ## 标识本节点的字条串
}
## keepalived 会定时执行脚本,nginx_check.sh
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
vrrp_instance VI_1 {
state MASTER ## 主节点为 MASTER,对应的备份节点为 BACKUP
interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同 在/etc/sysconfig/network-scripts/ 下存在 ifcfg-ens33文件(有的是ifcfg-eth0)
virtual_router_id 130 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
mcast_src_ip 192.168.71.128 ## 本机IP
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.71.130 ## 虚拟 ip,可以定义多个
}
}
7、在 etc/keepalived目录下添加 nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
我是自接替换的
8、启动keepalived# service keepalived start
出现以下,代表启动成功Starting keepalived: [ OK ]
执行ip add命令可查看虚拟IP(192.168.71.130) 已经挂上
关闭keepalived# service keepalived stop
执行ip add命令可查看虚拟IP(192.168.71.130) 已经消失
9、在192.168.71.129上同样步骤安装 keepalived 并启动。配置文件如下
10、访问192.168.71.130 (注意开启80端口)
测试就不写了,主要看以下两篇博客搭建
https://www.jianshu.com/p/da26df4f7d60
http://blog.51cto.com/superpcm/2095395