一, 环境
服务器系统版本: CentOS 7
两台服务器, 一台做主节点, 一台做备用节点:
- 192.168.1.200(主节点)
- 192.168.1.201(备用节点)
二, 安装 keepalived 2.0
两台服务器都安装上 keepalived 2.0.
1, 安装依赖包(libnl 库 - 简化 netlink 协议对象的实现, gcc-GNU 编译器套件, openssl-devel - 包含开发支持各种密码算法和协议的应用程序所需的文件的库包)
#yum install -y libnl-devel libnl3-devel libnfnetlink-devel gcc openssl-devel
2, 访问 keepalived 官网下载安装包:
#wget
3, 解压 keepalived 安装包:
#tar -zxvf keepalived-2.0.18.tar.gz
4, 安装 keepalived:
- #mkdir /usr/local/keepalived(创建安装目录)
- #cd keepalived-2.0.18 切换到(安装目录下)
- #./configure --prefix=/usr/local/keepalived(指定位置下安装源代码)
- #make(编译)
- #make install(源代码安装)
检查 keepalived 版本号
#/usr/local/keepalived/sbin/keepalived -v
复制 keepalived 配置文件到 /etc/keepalived/ 目录下:
- #mkdir /etc/keepalived(创建目录)
- #cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
- (启动 keepalived 时, 默认会去 /etc/keepalived 目录下找 keepalived.conf 文件)
keepalived 日志文件路径:/var/log/messages
三, 配置 keepalived
192.168.1.200(主节点)上操作:
1, 配置 keepalived 文件
#vi /etc/keepalived/keepalived.conf
将默认的配置文件内容清空(%d), 输入以下内容:
- vrrp_instance VI_1 {
- ### 实例名称, VI_1 即实例名.
- state MASTER ### 标记该节点是主节点(master)
- interface ens33 ### 配置 vip 绑定的网卡, ens33 是网卡名, 按照实际情况修改成你自己(网卡名查询: ifconfig).vip 指的是虚拟 ip 地址.
- virtual_router_id 51 ### 取 1-255 之间的值, 主备节点的值需要设置成一样的, 成为一个组.
- priority 100 ### 权重, 数值大的节点是 master.
- advert_int 1 ### 主备节点之间通讯的间隔秒数, 用于判断主节点是否存活.
- authentication {
- auth_type PASS ### 认证方式
- auth_pass 1111 ### 认证密码
- }
- virtual_ipaddress {
- 192.168.1.100 ### vip 地址
- }
- }
保存文件: wq, 退出.
2, 启动 keepalived:
#systemctl start keepalived
3, 查看主节点的地址信息:
#ip addr
输出如下信息:
可以看到, 在 ens33 网卡下面, 已经出现了 vip:192.168.1.100
4, 在 192.168.1.102(备用节点)上操作:
编辑 keepalived.conf 配置文件:
- #vi /etc/keepalived/keepalived.conf
- vrrp_instance VI_1 {
- state BACKUP ### 标记该节点是备用节点(backup)
- interface ens33 ### 配置 vip 绑定的网卡, eno16777736 是网卡名, 按照实际情况修改成你自己 ### 的网卡名.### vip 指的是虚拟 ip 地址.
- virtual_router_id 51 ### 取 1-255 之间的值, 主备节点的值需要设置成一样的, 成为一个组.
- priority 66 ### 权重, 数值小的节点是 backup.
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.1.100 ### 设置成跟主节点一样的 vip 地址.
- }
- }
保存文件, 退出.
5, 启动 keepalived:
#systemctl start keepalived
查看备用节点的地址信息:# ip addr
输出如下信息:
从上图可以看出, 备用节点没有 vip 地址. vip 地址在主节点上.
四, 实验验证 nginx+keepalived 高可用
1, 在主备节点上都安装好 nginx.nginx 安装方法:
2, 安装好之后, 编辑 nginx 的主页文件.
192.168.1.200(主节点)上操作:
#vi /usr/share/nginx/html/index.HTML
清空该文件的内容, 输入以下内容:
200
保存文件, 退出.
3,192.168.1.102(备用节点)上操作:
#vi /usr/share/nginx/HTML/index.HTML
清空该文件的内容, 输入以下内容:
201
保存文件, 退出.
4, 测试
(1)测试虚拟(网址)ip 跳转的服务器网址(主节点)
打开浏览器, 访问 192.168.1.200:81(ip + 端口号)(主节点)的 web 页面:
输出结果为 200 - 主节点的内容
访问 192.168.1.201:81(备用节点)的 Web 页面
输出结果为 201 - 备用节点内容
访问 192.168.1.100:81(vip 虚拟 ip)的 Web 网页
输出结果为 200-- 主节点
因为 vip 地址在备用节点 192.168.1.102 上, 所以访问 vip 地址会跳转到备用节点上.
(2)故障测试 ---- 当主节点出现故障或者宕机时, 虚拟 ip 是否能跳转至备用节点.
a, 通过停止主节点的 keepalived 服务来模拟故障.
192.168.1.106(主节点)上操作:
停止 keepalived 服务:
#systemctl stop keepalived
b, 访问虚拟 ip(vip)192.168.1.100:80
输出内容为 201------ 说明当主节点宕机时, 虚拟 ip 将会跳转至备用节点.
(3)主节点上线时, vip 是否能跳转至主节点
a, 主机点开启 keepalived 服务
#systemctl start keepalived
b, 访问 vip
浏览器打开 192.168.1.100
输出内容 200----- 主节点. 说明主节点上线时, vip 将会跳转至主节点.
五, 在实际生产环境中把 vip 地址 (或者 vip 地址对应的域名) 提供给用户访问, 以达到高可用的目的.
来源: http://www.bubuko.com/infodetail-3186559.html