更详细的文档可以访问如下链接https://download.csdn.net/download/xaosky/85036660https://download.csdn.net/download/xaosky/85036660
目录
目录
1.前言
- 本文档所面对的学习对象如下:
- Linux系统管理员;
- 数据中心运维人员。
- 本文档全部原创,实际操作完成次数超过十次以上,读者可放心按照顺序进行操作。
- 本文档的实际操作系统平台为Oracle Linux7.9系统,同样适用于Redhat、CentOS的其他版本Linux系统(需对部分系统配置进行简单更改即可)。
- 请尊重原创。
2.部署规划
类目 | 节点1 | 节点2 |
系统环境 | Vmware虚拟机 | |
虚拟机软件 | Vmware workstation 16 pro | |
系统配置 | CPU 4C / 内存 8G / 磁盘40G / 网络接口1个 | |
操作系统 | Oracle Linux7.9 | |
IP地址 | 192.168.31.11 | 192.168.31.12 |
虚拟地址 | 192.168.31.10 | |
主机名称 | http-keep-001 | http-keep-002 |
集群软件 | keepalived | |
应用软件 | httpd | |
实现功能 | 通过keepalived实现httpd服务的冗余部署。
|
3.创建虚拟机
运行虚拟化软件,创建一个全新的虚拟机。
要求CPU 4C,内存8G,硬盘40G,网络选择桥接模式。
建议:
- 不要选择一次性分配所有磁盘空间;
- 移除“打印机”和“声卡”。
4.部署操作系统
虚拟机创建完成之后,启动虚拟机,从OracleLinux7.9光盘镜像进行启动,开始安装操作系统。
主要配置说明:
- 语言支持建议增加简体中文;
- 配置正确的时区和时间;
- 操作系统选择最小化安装;
- 建议关闭kdump;
- 关闭系统安全策略;
- 主机名称:http-keep-001/http-keep-002
- IP地址:192.168.31.11/192.168.31.12
- 按照要求创建系统密码、磁盘分区等操作
5.配置系统环境
在两个节点做如下配置。
5.1禁用系统安全模块
# vi /etc/selinux/config
disabled
5.2禁用防火墙
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl status firewalld
5.3网络配置
检查IP地址配置,如有问题则编辑对应网卡配置文件即可,更改之后请重启network服务。
5.4主机名称
检查系统主机名称,如有问题则使用命令:hostnamectl set-hostname hostname进行更改,更改之后请重启操作系统使生效。
5.5配置HOSTS文件
编辑/etc/hosts文件,增加两个节点IP地址和主机名称的对应。
# vi /etc/hosts
5.6 YUM配置
配置YUM,可以解决软件包安装过程中的依赖关系。
# vi /etc/yum.repos.d/system.repo
# yum clean all
# yum makecache
注:读者可以mount系统光盘镜像来创建本地YUM源,具体方法不再赘述,可参考先前发布的其他文档。
6.软件安装
6.1安装httpd及服务配置
# yum install httpd -y
# systemctl start httpd
# systemctl enable httpd
浏览器输入两个节点的IP地址进行访问测试。
本文档为了测试集群配置,实际并无网页内容,为了区别两个节点访问页面的区别,我们在每个节点做如下配置。
节点1:
# echo 'welcome to you http-keep-001' > /var/www/html/index.html
节点2:
# echo 'welcome to you http-keep-002' > /var/www/html/index.html
6.2安装keepalived及服务配置
# yum install keepalived -y
# systemctl start keepalived
# systemctl enable keepalived
7.集群配置
7.1服务检测脚本配置
创建服务检测脚本,用以检测httpd服务的运行状态,当httpd服务停止时,触发停止keepalived服务的运行。
此部分在两个节点均做配置。
# vi /sbin/check_httpd.sh
# chmod 777 /sbin/check_httpd.sh
# ./sbin/check_httpd.sh
7.2 keepalived配置文件
7.2.1节点1配置
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.b
# vi /etc/keepalived/keepalived.conf
# cat /etc/keepalived/keepalived.conf
7.2.2节点2配置
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.b
# vi /etc/keepalived/keepalived.conf
# cat /etc/keepalived/keepalived.conf
7.3配置文件说明
Keepalived的主配置文件为/etc/leepalived/keepalived.conf,改文件包含global_defs、virtual_server、vrrp_instance和vrrp_script四个配置区域,简要介绍如下:
- global_defs区域:Keepalived的全局配置;
- virtual_server区域:虚拟服务器的必要设定,如做lvs的高可用,还有real_server关键字可用等;
- vrrp_instance区域:用来定义对外提供服务的VIP及其虚拟服务器的相关属性;
- vrrp_script区域:用来侦测服务守护进程是否存活的脚本。
本文档配置内容如下,将做详细介绍。
global_defs {
router_id http-keep-001
【标识此节点的字符串,通常设置为主机名称】
script_user root
【执行监控脚本的用户身份】
}
vrrp_script check_httpd {
script "/sbin/check_httpd.sh"
【设置所要检测的脚本】
interval 2
【每2秒钟检测一次】
weight -5
【若检测失败则优先级减少5个值】
fall 3
【若连续失败3次则认为此服务器已失效】
rise 2
【若连续成功次数达到此值则认为服务器已生效】
}
vrrp_instance VI_1 {
state BACKUP
【也可以是MASTER,当两个节点都设置为BACKUP,优先级高的搭配nopreempt,将不会“抢回”主节点】
interface ens33
【当前节点的网卡名称】
virtual_router_id 50
【虚拟路由ID,同一集群的多个节点必须一致】
nopreempt
【非抢占模式,避免出现无谓的主从节点抢断】
priority 100
【节点优先级,数值高则优先级权重高】
advert_int 1
【健康检查的时间间隔,默认1秒】
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.31.10
【定义集群虚拟IP地址,最少1个】
}
track_script {
check_httpd
【和vrrp_script区域定义的字段名相关联】
}
}
7.4服务配置
在两个节点上分别重启keepalived服务,查看服务状态。
# systemctl restart keepalived
# systemctl status keepalived
虚拟IP地址192.168.31.10目标在节点1上运行。
查看节点1的IP地址,能看到虚拟地址192.168.31.10。
8.访问测试
- 浏览器输入集群的虚拟IP地址进行访问测试。
- 停止htttd服务测试
在节点1停止httpd服务,keepalived状态如下:
# systemctl stop httpd
# systemctl status keepalived
在节点1停止httpd服务后,keepalived服务也停止运行。
然后,查看节点2的keepalived服务运行状态,可以看到虚拟IP地址已经被接管。
在浏览器输入集群的虚拟IP地址进行访问测试,可以看到,httpd页面已经转移到了节点2。
- 恢复测试
接上部分,我们启动节点1的httpd服务和keepalived服务,查看两个节点的keepalived运行状态,会发现,节点1并没有“抢回”虚拟IP地址。
当我们在节点2上停止httpd服务后,keepalived服务随即停止,虚拟IP地址回到了节点1,http的访问也切回到了节点1。
9.注意事项
问题:
当某个节点httpd服务异常,导致keepalived服务终止之后,若httpd服务恢复正常,则keepalived并不会自动运行。
解决办法:
- 安装crontabs软件,启动后并设置开机自启动。
# yum install -y crontabs
# systemctl start crond
# systemctl enable crond
- 建立一个可执行文件。
# vi /sbin/check_httpd_sys.sh
# cat /sbin/check_httpd_sys.sh
# chmod 777 /sbin/check_httpd_sys.sh
实际操作截图如下:
可执行文件的内容是,当httpd服务正常运行后,执行启动keepalived服务的操作。
- 添加任务调度
将可执行文件加入自动调度计划,没一分钟执行一次。
# crontab -e
# crontab -l
- 测试
如下图,当我们把httpd服务修复启动之后,keepalived服务将会自动启动。