环境:
- 双机部署keepalived,一主一备(备可以多个)。
- 主机ip:192.168.1.101,备机ip:192.168.1.102,虚拟ip:192.168.1.120<br>
- 后端服务:实际可以利用nginx对web服务进行反向代理,这里仅使用nginx的静态页面index.html进行测试。
keepalived安装
- 在线安装:
# 仓库的keepalived可能是比较旧的版本,建议官网下载编译安装
sudo yum install keepalived
- 离线安装
-
点击这里下载,建议使用2.0.0版本。
-
解压
-
进入目录
-
开始安装,依次执行
# 需要跑这个才能自动生成系统服务文件(keepalived.service)
# 2.0.0版本没有这个,直接执行下面的步骤即可,也会自动建立系统服务文件
#./build_setup
# 安装配置,默认就可以
./configure
# 编译安装
sudo make && sudo make install
可能会出现依赖缺失的问题,查看解压目录下的INSTALL文件,里面有必须依赖说明。
配置
- 建立keepalived配置文件软连接到keepalived默认的配置文件目录: /etc/keepalived/keepalived.conf
sudo ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
- 开启端口和vrrp协议支持
- 开启后端服务端口,这个示例只用到nginx的index.xml静态页面,端口号是:8001。
如果防火墙使用firewalld管理:
firewall-cmd --zone=public --add-port=8001/tcp --permanent
nginx.conf:
server {
listen 8001;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
...
}
- 开启vrrp协议支持
其中enp0s3是网卡名称,使用ifconfig
命令可以查看;224.0.0.18是keepalived的默认组播地址。
# 添加规则
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
# 重启防火墙
firewall-cmd --reload
修改keepalived配置文件keepalived.conf
sudo vim /etc/keepalived/keepalived.conf
修改完成的的主机配置文件内容:
- 其中
interface
是网卡名称,一般服务器都有两个网卡,一个内网一个外网,keepalived是客户端访问的,所以修改为外网网卡。 - virtual_ipaddress就是虚拟ip了,可以配置多个,用空格或者换行隔开。
- 删除所有virtual_server节点,virtual_server是lvs用到的,这个例子负载均衡用了nginx,不需要配置lvs。
- 复制或者同步配置文件到备机,修改
vrrp_instance_VI_1
下的state
为BACKUP
以及优先级priority,优先级priority要比主机的小。
启动测试
- 主机和备机分别启动keepalived
sudo systemctl start keepalived.service
使用命令:
sudo systemctl enable keepalived.service
可以设置为开机启动。 使用命令:ip addr
可以查看网卡的所有ip信息:可以发现对应网卡上已经多了一个ip,这个ip就是我们设置的虚拟ip。 如果关闭了主机keepalived,会发现虚拟ip已经漂移到了备机上了。
- 修改主备机的nginx首页静态页面,增加不同的标识以区分是来自那台机的页面
编译安装版的nginx的首页路径:/usr/local/nginx/html/index.html
- 在浏览器上测试
浏览器输入: 192.168.1.120:8001,结果如下图:
关闭主机keepalived: sudo systemctl stop keepalived.service
,刷新浏览器页面,结果如下图:
测试成功!