一、方案介绍
1.方案背景
公司服务器等多种应用架构为用户直接连接服务模式,这种模式存在以下缺陷。
AP Server有140+,采用终端直接,管理不便
每台AP孤立存在、相互独立,容易出现单点故障
负载根据个人的经验设定调节,资源利用不均衡
异常问题处理时间长/影响范围大,故障恢复慢
常规维护由于时间限制,维护困难
为了解决这些问题,合理利用资源并尽可能的节约成本,我们尝试使用并测试Keepalived+ Haproxy这种架构进行优化现有服务模式。
2.方案架构
3.架构简介
确认并搭建CentOS + Keepalived + Haproxy架构,采用双活模式
CentOS使用防火墙,仅开通必要端口,限制非法访问和病毒传播
现每组负载均衡设置8个虚拟VIP,每个节点4个VIP,实现秒级切换
每个VIP对应一组AP Server,Haproxy自动检测每个AP Server节点状态
实现重启单独的HA节点和AP Server节点都能秒级自动切换
手动维护每组AP Server时,不影响用户正常使用
4.架构优势
使用Keepalived实现负载均衡避免出现单点故障
使用Haproxy实现服务轮询机制合理利用资源
维护任意单个节点不会影响终端访问
出现故障后系统快速恢复,恢复时间到达秒级‘
相比硬件负载均衡,成本开销极低
二、方案规划
1.网络规划
规划了一个24位的网络段192.168.10.0/24给HA使用,该网段为能看和MES AP Server与MES终端能够通讯。
HA的命名规范位HA-10xx,HA表示功能,10为标识网段,xx表示具体主机IP。
每个HA具体规划如下。
2.软件规划
采用虚拟机方式部署,软件规划如下:
系统规格:4C + 4G + 50G
操作系统:CentOS7 X64
Haproxy:HA-Proxy version 1.5.18 2016/05/10
Keepalived:Keepalived v1.3.5 (03/19,2017)
三、操作系统安装
1.分发虚拟机
根据规划规格分发虚拟机。
2.安装操作系统
-
1)挂着CentOS-7-x86_64-Minimal引导iso并启动虚拟机,选择Install CentOS7开始安装。
-
2)语言和键盘选择英文。
-
3)然后进入安装主界面,依次设置网络、时间、分区,使用的是CentOS-7-x86_64-Minimal精简安装iso,如果使用完成安装镜像,需要设置SOFTWARE SELECTION设置Minimal Install。
-
4)点击NETWORK & HOST NAME设置主机名和IP地址,由于服务器不需要访问互联网,因此我们DNS留空。
-
5)点击DATE & TIME,设置时区和时间服务器NTP。
-
6)点击INSTALLATION DESTIATION进行分区。
-
7)点击Begin Installation开始安装操作系统。
-
8)安装过程中,进行创建账号,基础建设部考虑到安全管理的原因创建设置了复杂的root密码(12位,包含数字、字符、大写、小写),并且创建了一个普通用户admin并设置复杂密码。后期会设置禁止root远程登陆系统。
-
9)安装完成后点击Reboot按钮重启进入系统。
3.操作系统基础设置
- 1)使用ssh工具连接到服务器,用户使用admin,然后切换至root账号。
[admin@HA-1027 ~]$ who
admin pts/0 2020-03-17 15:21 (10.102.120.51)
[admin@HA-1027 ~]$ su root
[root@HA-1027 admin]# who
admin pts/0 2020-03-17 15:21 (10.102.120.51)
- 2)设置History和ls显示格式,设置History记录10000行。
cat <<EOF >> /etc/bashrc
HISTFILESIZE=10000
HISTSIZE=10000
USER_IP=\`who -u am i 2>/dev/null| awk '{print \$NF}'|sed -e 's/[()]//g'\`
if [ -z \$USER_IP ]
then
USER_IP=\`hostname\`
fi
HISTTIMEFORMAT="%F_%T \$USER_IP:\`whoami\` "
export HISTTIMEFORMAT
export TIME_STYLE=\'+%Y-%m-%d_%H:%M:%S\'
EOF
source /etc/bashrc
显示效果如下
[root@HA-1027 admin]# history
1 2020-03-17_15:32:29 10.102.120.51:root who
2 2020-03-17_15:32:53 10.102.120.51:root cls
3 2020-03-17_15:32:54 10.102.120.51:root clear
[root@HA-1027 admin]# ls -h
total 4
-rw-rw-r--. 1 admin admin 769 2020-03-17_15:36:35 1.txt
- 3)禁用IPv6(可选)。
echo "net.ipv6.conf.all.disable_ipv6 =1" >> /etc/sysctl.conf
sysctl -p
- 4)禁用selinux(可选)。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
- 5)设置yum源,安装常用组件并更新系统。
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install –y wget vim net-tools
yum update -y
- 6)设置本机hosts文件,我们把现有的和规划预留的主机都放进来,以便后续操作。
[admin@HA-1026 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.21 HA-1021
192.168.10.22 HA-1022
192.168.10.23 HA-1023
192.168.10.24 HA-1024
192.168.10.25 HA-1025
192.168.10.26 HA-1026
192.168.10.27 HA-1027
192.168.10.28 HA-1028
192.168.10.29 HA-1029
192.168.10.30 HA-1030
192.168.10.31 HA-1031
192.168.10.32 HA-1032
192.168.10.33 HA-1033
192.168.10.34 HA-1034
192.168.10.35 HA-1035
192.168.10.36 HA-1036
192.168.10.37 HA-1037
192.168.10.38 HA-1038
192.168.10.39 HA-1039
192.168.10.40 HA-1040