haproxy负载均衡集群安装与配置

本文最后更新于:2022年1月4日 晚上

haproxy负载均衡集群安装与配置

一、虚拟机模板环境准备

1、关闭防火墙、selinux

1
2
3
4
5
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
getenforce
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2、 删除iptables防火墙规则

1
2
3
4
iptables -F
iptables -X
iptables -Z
/usr/sbin/iptables-save

3、移除本地yum源

1
mv /etc/yum.repos.d/* /media/

4、准备镜像做本地源

CentOS-7-x86_64-DVD-1804.iso上传到/home目录下

1
2
3
4
mkdir /opt/centos
mount -o loop /home/CentOS-7-x86_64-DVD-1804.iso /mnt/
cp -rvf /mnt/* /opt/centos/
umount /mnt/

5、配置本地yum源

1
vim /etc/yum.repos.d/local.repo
1
2
3
4
5
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1

6、清理yum缓存

1
2
yum clean all
yum list

二、搭建Web1

1、重命名服务器名字

1
2
hostnamectl set-hostname Wss34-Web1
su

2、安装数据库

1
2
3
yum install -y mariadb-server
systemctl restart mariadb
systemctl enable mariadb

3、配置数据库

  • 修改数据库密码
1
mysqladmin -uroot password 数据库密码

或者

1
2
3
4
5
mysql
MariaDB [(none)]> use mysql;
MariaDB [mysql]> UPDATE user SET password=password('数据库密码') WHERE user='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;

4、安装Web服务器

1
2
3
yum install -y php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
systemctl restart httpd
systemctl enable httpd

具体请参考:PHP连接数据库 - ERHE·Blog

5、部署Discuz-X3.4

Discuz_X3.4_SC_UTF8【20200818】.zip上传到网站根目录(/var/www/html)并解压

Discuz_X3.4_SC_UTF8【20200818】.zip 点击下载

1
2
3
4
yum install -y unzip
cd /var/www/html
unzip Discuz_X3.4_SC_UTF8【20200818】.zip
chmod 777 -R /var/www/html/*

浏览器打开这个网页

1
http://IP地址/upload/

6、部署完成

7、写入页面

1
2
cd /var/www/html
vim index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="ZH">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web1</title>
</head>
<body>
<h1>This is Web1</h1>
<a href="./upload">点击这里进入博客</a>
</body>
</html>

最后wq保存就好了

二、搭建Web2

拷贝Web1就行了

⭕注意:一定要先把虚拟机关机后把VMWera关闭后再进行复制

PS:记得改一下名字和Web页面

1
2
3
hostnamectl set-hostname wss34-web2
cd /var/www/html
vim index.html

把里面的1改成2

三、部署haproxy1

1、重命名服务器名字

1
2
hostnamectl set-hostname Wss34-haproxy
su

2、安装haproxy

1
yum install -y haproxy

3、配置haproxy

1
vim /etc/haproxy/haproxy.cfg

翻到最下面改这这些

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js

use_backend app if url_static
default_backend app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 10.129.1.233:80 check
server app2 10.129.0.23:80 check

listen stats
mode http
bind 0.0.0.0:8888
stats enable
stats uri /wss34
stats auth admin:admin123

4、重启haproxy

1
2
systemctl restart haproxy
systemctl enable haproxy

5、访问并测试

1
http://10.129.1.132/

6、再次访问并测试

7、进入监控界面

1
http://10.129.1.132:8888/wss34

至此搭建完成!

四、搭建haproxy2

拷贝haproxy1一份就行了

⭕注意:一定要先把虚拟机关机后把VMWera关闭后再进行复制

五、部署keepalived高可用

1、重命名服务器名字

1
2
hostnamectl set-hostname Wss34-haproxy2
su

2、安装keepalived

  • haproxy和haproxy2两台服务器都要安装
1
yum install -y keepalived

3、查看网卡

1
ip a

4、更改配置文件

1
vim /etc/keepalived/keepalived.conf
  • 主服务器的配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state MASTER
interface ens36
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.34.100
}
}
  • 从服务器的配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state BACKUP
interface ens36
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.34.100
}
}

5、运行keepalived

1
systemctl enable --now keepalived

6、查看运行状态

1
systemctl status keepalived
  • 主服务器上面的状态

  • 从服务器上面的状态

7、进行测试

断开了主节点

再进行访问测试

六、部署主从数据库

1、准备两台虚拟机

拷贝模板虚拟机就行了,拷贝两次

⭕注意:一定要先把虚拟机关机后把VMWera关闭后再进行复制

PS:记得改一下服务器名字

1
2
hostnamectl set-hostname wss34-sql1
su
1
2
hostnamectl set-hostname wss34-sql2
su

2、安装数据库

⭕这步操作两台都要配置

1
2
3
yum install -y mariadb-server
systemctl restart mariadb
systemctl enable mariadb

3、配置数据库

⭕这步操作两台都要配置

  • 更改数据库密码
1
mysqladmin -uroot password 数据库密码

或者

1
2
3
4
5
mysql
MariaDB [(none)]> use mysql;
MariaDB [mysql]> UPDATE user SET password=password('数据库密码') WHERE user='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;

  • 开启远程连接
1
2
3
4
mysql -u root -p
MariaDB [mysql]> grant all privileges on *.* to 'root'@'%' identified by '数据库密码';
MariaDB [mysql]> flush privileges;
systemctl restart mariadb

4、主服务器配置

1
vim /etc/my.cnf.d/server.cnf

在[mysqld]下面加入这些配置

1
2
3
server-id=1
log_bin=mysql-bin
binlog-ignore-db=mysql

重启数据库并查看配置

1
2
3
systemctl restart mariadb
mysql -u root -p
show master status;

5、从服务器配置

1
vim /etc/my.cnf.d/server.cnf

在[mysqld]下面加入这些配置

1
server-id=2

重启数据库并配置

1
2
3
4
5
6
systemctl enable --now mariadb
mysql -u root -p
MariaDB [(none)]> change master to master_host='主数据库IP地址',master_user='root',master_password='主数据库密码',master_log_file='mysql-bin.000002',master_log_pos=245;
# 后面两个数据按照上一步的主数据库查出来的配置来进行填写。
MariaDB [(none)]> start slave;
# 如果在这一步一直失败的话就退出数据库重启数据库以后再进去数据库这么操作就好了!

查看从服务器运行状态

1
MariaDB [(none)]> show slave status \G;

6、进行测试

  • 主数据库
1
2
create database wangss34;
show databases;

  • 从数据库
1
show databases;

七、部署Web到主从数据库集群

1、部署Web服务器

⭕使用原来的Web1服务器进行删除网站根目录重新配置部署Discuz-X3.4

  • 删除原来旧的网站根目录
1
rm -rf /var/www/html/*
  • Discuz_X3.4_SC_UTF8【20200818】.zip上传到网站根目录(/var/www/html)并解压

Discuz_X3.4_SC_UTF8【20200818】.zip 点击下载

1
2
3
cd /var/www/html
unzip Discuz_X3.4_SC_UTF8【20200818】.zip
chmod 777 -R /var/www/html/*

浏览器打开这个网页

1
http://IP地址/upload/

3、验证主从数据库

  • 主数据库
1
show databases;

  • 从数据库
1
show databases;

📣特别声明

此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,

如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,

在此,感谢大家的阅读与支持!🤝💦🎉

🍻支持一下

觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。

👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!