mysql,apache-lvs,haproxy叢集
阿新 • • 發佈:2020-11-22
mysql+lvs(DR)
- 一般情況下,資料庫伺服器需要共享資料,同時要部署高可用
- 這裡沒有作共享,高可用
環境描述
主機 | 服務 | LVS角色 |
---|---|---|
vm5(192.168.225.134) | Load balancer | |
vm2(192.168.225.128) | mysql | real server |
vm4(192.168.225.131) | mysql | real server |
- 測試真機(192.168.161.108)
- VIP(172.16.225.225)
mysql環境部署
- mysql部署
- vm2建立一個數據庫test1
mysql> create database test1; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test1 | +--------------------+ 5 rows in set (0.00 sec)
- vm4建立一個數據庫test2
mysql> create database test2; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test2 | +--------------------+ 5 rows in set (0.03 sec)
lvs配置
vm2,vm4配置IP
- vm2修改arp引數
[root@vm2 ~]# cat /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
- 配置IP
[root@vm2 ~]# yum -y install net-tools [root@vm2 ~]# ifconfig lo lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) ................................. [root@vm2 ~]# ifconfig lo 172.16.225.225/32 ##臨時修改 [root@vm2 ~]# ifconfig lo lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 172.16.225.225 netmask 255.255.255.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) ................................. [root@vm2 ~]# echo 'ifconfig lo 172.16.225.225/32' >> /etc/rc.local ##永久修改 [root@vm2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.225.128 NETMASK=255.255.225.0 GATEWAY=192.168.225.2 DNS1=192.168.225.2 NAME=ens33 DEVICE=ens33 ONBOOT=yes
- vm4修改arp引數
[root@vm4 ~]# cat /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
- 配置IP
[root@vm4 ~]# yum -y install net-tools
[root@vm4 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
[root@vm4 ~]# ifconfig lo 172.16.225.225/32
[root@vm4 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 172.16.225.225 netmask 0.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
[root@vm4 ~]# echo 'ifconfig lo 172.16.225.225/32' >> /etc/rc.local
[root@vm4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.131
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens33
DEVICE=ens33
ONBOOT=yes
排程器vm5配置IP
[root@vm5 ~]# ifconfig lo 172.16.225.225/32
[root@vm5 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 172.16.225.225/24 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
[root@vm5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.134
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens32
DEVICE=ens32
ONBOOT=yes
配置排程器
下載ipvsadm
[root@vm5 ~]# yum -y install ipvsadm
新增規則
[root@vm5 ~]# ipvsadm -A -t 172.16.225.225:3306 -s wrr
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:3306 -r 192.168.225.128:3306 -g
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:3306 -r 192.168.225.131:3306 -g
[root@vm5 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.225.225:3306 wrr
-> 192.168.225.128:3306 Route 1 0 0
-> 192.168.225.131:3306 Route 1 0 0
驗證
- 真機上新增到達VIP的路由
[wisan@fyj ~]$ sudo route add -host 172.16.225.225/32 gw 192.168.225.1 dev vmnet8
[wisan@fyj ~]$ route -nv
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.161.1 0.0.0.0 UG 100 0 0 enp2s0
172.16.105.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.225.225 192.168.225.1 255.255.255.255 UGH 0 0 0 vmnet8
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.161.0 0.0.0.0 255.255.255.128 U 100 0 0 enp2s0
192.168.225.0 0.0.0.0 255.255.255.0 U 101 0 0 vmnet8
- vm2,vm4配置遠端mysql許可權
mysql> grant all privileges on *.* to 'root'@'192.168.161.108' identified by '123456';
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | 192.168.161.108 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+-----------------+-------------------------------------------+
4 rows in set (0.00 sec)
- 真機(192.168.161.108)測試
[wisan@fyj ~]$ mysql -uroot -h192.168.225.131 -p123456
ERROR 1130 (HY000): Host '192.168.225.1' is not allowed to connect to this MySQL server
##發現192.168.225.1(真機上到虛擬機器網路的閘道器)沒有許可權連線資料庫導致真機連線不上
mysql> grant all privileges on *.* to 'root'@'192.168.225.1' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | 192.168.161.108 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 192.168.225.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+-----------------+-------------------------------------------+
5 rows in set (0.00 sec)
[wisan@fyj ~]$ mysql -uroot -h192.168.225.131 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test2 |
+--------------------+
5 rows in set (0.001 sec)
- 通過VIP連線資料庫
[wisan@fyj ~]$ mysql -uroot -h172.16.225.225 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test2 |
+--------------------+
5 rows in set (0.002 sec)
[wisan@fyj ~]$ mysql -uroot -h172.16.225.225 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
5 rows in set (0.003 sec)
mysql+lvs(NAT)
環境描述
主機 | 服務 | LVS角色 |
---|---|---|
vm5(192.168.225.134) | Load balancer | |
vm2(192.168.225.128) | mysql | real server |
vm4(192.168.225.131) | mysql | real server |
- 測試真機(192.168.161.108)
- VIP(192.168.161.109)
mysql環境部署
- mysql部署
- vm2建立一個數據庫test1
mysql> create database test1;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
5 rows in set (0.00 sec)
- vm4建立一個數據庫test2
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test2 |
+--------------------+
5 rows in set (0.03 sec)
LVS配置
- vm2,vm4 arp迴歸預設值
[root@vm2 ~]# sysctl -p /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0
配置IP
- vm2
[root@vm2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.128
NETMASK=255.255.225.0
GATEWAY=192.168.225.134
DNS1=192.168.225.2
NAME=ens33
DEVICE=ens33
ONBOOT=yes
[root@vm2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.225.134 0.0.0.0 UG 100 0 0 ens33
192.168.225.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
- vm4
[root@vm4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.131
NETMASK=255.255.225.0
GATEWAY=192.168.225.134
DNS1=192.168.225.2
NAME=ens33
DEVICE=ens33
ONBOOT=yes
[root@vm4 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.225.134 0.0.0.0 UG 100 0 0 ens33
192.168.225.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
- vm5(兩塊網絡卡)
[root@vm5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.134
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens32
DEVICE=ens32
ONBOOT=yes
[root@vm5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.161.109
NETMASK=255.255.225.128
NAME=ens34
DEVICE=ens34
ONBOOT=yes
開啟DS排程器IP轉發功能
[root@vm5 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@vm5 ~]# sysctl -p
net.ipv4.ip_forward = 1
配置LVS規則
下載ipvsadm
[root@vm5 ~]# yum -y install ipvsadm
新增規則
[root@vm5 ~]# ipvsadm -A -t 192.168.161.109:3306 -s wrr
[root@vm5 ~]# ipvsadm -a -t 192.168.161.109:3306 -r 192.168.225.128:3306 -m
[root@vm5 ~]# ipvsadm -a -t 192.168.161.109:3306 -r 192.168.225.131:3306 -m
[root@vm5 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.161.109:3306 wrr
-> 192.168.225.128:3306 Masq 1 0 0
-> 192.168.225.131:3306 Masq 1 0 0
[root@vm5 ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@vm5 ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.161.109:3306 -s wrr
-a -t 192.168.161.109:3306 -r 192.168.225.128:3306 -m -w 1
-a -t 192.168.161.109:3306 -r 192.168.225.131:3306 -m -w 1
驗證
- vm2,vm4配置遠端mysql許可權
mysql> grant all privileges on *.* to 'root'@'192.168.161.108' identified by '123456'
mysql> grant all privileges on *.* to 'root'@'192.168.225.1' identified by '123456';
mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | 192.168.161.108 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 192.168.225.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+-----------------+-------------------------------------------+
- 真機驗證遠端登入mysql
[wisan@fyj tmp]$ mysql -uroot -h192.168.161.109 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test2 |
+--------------------+
5 rows in set (0.009 sec)
[wisan@fyj tmp]$ mysql -uroot -h192.168.161.109 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
5 rows in set (0.007 sec
haproxy-mysql叢集
環境描述
主機 | 服務 | 角色 |
---|---|---|
vm5(192.168.225.134) | haproxy | |
vm2(192.168.225.128) | mysql | real server |
vm4(192.168.225.131) | mysql | real server |
- 測試真機(192.168.43.166)
mysql環境部署
- mysql部署
- vm2建立一個數據庫test1
mysql> create database test1;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
5 rows in set (0.00 sec)
- vm4建立一個數據庫test2
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test2 |
+--------------------+
5 rows in set (0.03 sec)
haproxy安裝部署
修改haproxy伺服器sysctl.conf
[root@vm5 haproxy]# vim /etc/sysctl.conf
[root@vm5 haproxy]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
修改happroxy.cfg配置並重啟happroxy
[root@vm5 haproxy]# vim /etc/haproxy/haproxy.cfg
listen webcluster
bind 0.0.0.0:3306
# bind 0.0.0.0:443
mode tcp
#option httpchk GET /index.html
log global
maxconn 3000
balance roundrobin
cookie SESSION_COOKIE insert indirect nocache
server mysql1 192.168.225.128:3306 check inter 2000 fall 5
server mysql2 192.168.225.131:3306 check inter 2000 fall 5
[root@vm5 haproxy]# systemctl restart haproxy
[root@vm5 haproxy]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 128 0.0.0.0:5355 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8189 0.0.0.0:*
LISTEN 0 128 [::]:5355 [::]:*
LISTEN 0 128 [::]:22 [::]:*
驗證
授權真機登入mysql
##vm2
mysql> grant all privileges on *.* to 'root'@'192.168.43.166' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'192.168.225.1' identified by '123456'; ##真機通往虛擬機器網路的閘道器
mysql> grant all privileges on *.* to 'root'@'192.168.225.134' identified by '123456'; ##haproxy伺服器
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
##vm4
mysql> grant all privileges on *.* to 'root'@'192.168.43.166' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'192.168.225.1' identified by '123456'; ##真機通往虛擬機器網路的閘道器
mysql> grant all privileges on *.* to 'root'@'192.168.225.1' identified by '123456'; ##haproxy伺服器
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
真機登入
[wisan@fyj ~]$ mysql -h192.168.225.134 -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| student |
| sys |
| test1 |
+--------------------+
6 rows in set (0.003 sec)
MySQL [(none)]> quit
Bye
[wisan@fyj ~]$ mysql -h192.168.225.134 -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| student |
| sys |
| test2 |
+--------------------+
6 rows in set (0.002 sec)
MySQL [(none)]>
lvs(DR)+apache
環境描述
主機 | 服務 | LVS角色 |
---|---|---|
vm5(192.168.225.134) | Load balancer | |
vm2(192.168.225.128) | apache | real server |
vm4(192.168.225.131) | apache | real server |
- 測試真機(192.168.43.166)
- VIP(172.16.225.225)
apacheh部署
- 過程略,詳情請點選——>httpd部署
##vm2,vm4的httpd配置相同
[root@vm2 ~]# vim /etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf
ServerName www.wisan.com:80
DocumentRoot "/var/www/html"
IncludeOptional conf.d/*.conf
[root@vm2 ~]# vim /etc/httpd/conf.d/vhost.conf <VirtualHost *:80>
ServerName www.wisan.com
DocumentRoot "/var/www/html/wisan"
ErrorLog "/var/log/httpd/error_log"
CustomLog "/var/log/httpd/access_log" common
</VirtualHost>
[root@vm2 ~]# vim /etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
[root@vm2 ~]# vim /etc/httpd/conf.d/ssl.conf
Listen 443 https
DocumentRoot "/var/www/html/wisan"
ServerName www.fanfan.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
[root@vm2 ~]# ls /etc/httpd/ssl/
httpd.crt httpd.csr httpd.key
[root@vm2 ~]# cat /var/www/html/wisan/index.html
rs1
[root@vm4 ~]# cat /var/www/html/wisan/index.html
rs2
lvs配置
vm2,vm4配置IP
- vm2修改arp引數
[root@vm2 ~]# cat /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
- 配置IP
[root@vm2 ~]# yum -y install net-tools
[root@vm2 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
.................................
[root@vm2 ~]# ifconfig lo 172.16.225.225/32 ##臨時修改
[root@vm2 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 172.16.225.225 netmask 255.255.255.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
.................................
[root@vm2 ~]# echo 'ifconfig lo 172.16.225.225/32' >> /etc/rc.local ##永久修改
[root@vm2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.128
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens33
DEVICE=ens33
ONBOOT=yes
- vm4修改arp引數
[root@vm4 ~]# cat /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
- 配置IP
[root@vm4 ~]# yum -y install net-tools
[root@vm4 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
[root@vm4 ~]# ifconfig lo 172.16.225.225/32
[root@vm4 ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 172.16.225.225 netmask 0.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
[root@vm4 ~]# echo 'ifconfig lo 172.16.225.225/32' >> /etc/rc.local
[root@vm4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.131
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens33
DEVICE=ens33
ONBOOT=yes
排程器vm5配置IP
[root@vm5 ~]# ifconfig lo 172.16.225.225/32
[root@vm5 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 172.16.225.225/24 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
[root@vm5 ~]# echo 'ifconfig lo 172.16.225.225/32' >> /etc/rc.local
[root@vm5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.225.134
NETMASK=255.255.225.0
GATEWAY=192.168.225.2
DNS1=192.168.225.2
NAME=ens32
DEVICE=ens32
ONBOOT=yes
配置排程器
下載ipvsadm
[root@vm5 ~]# yum -y install ipvsadm
新增規則
[root@vm5 ~]# ipvsadm -A -t 172.16.225.225:80 -s wrr
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:80 -r 192.168.225.128:80 -g
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:80 -r 192.168.225.131:80 -g
[root@vm5 ~]# ipvsadm -A -t 172.16.225.225:443 -s wrr
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:443 -r 192.168.225.131:443 -g
[root@vm5 ~]# ipvsadm -a -t 172.16.225.225:443 -r 192.168.225.128:443 -g
[root@vm5 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.225.225:80 wrr
-> 192.168.225.128:80 Route 1 0 0
-> 192.168.225.131:80 Route 1 0 0
TCP 172.16.225.225:443 wrr
-> 192.168.225.128:443 Route 1 0 0
-> 192.168.225.131:443 Route 1 0 0
[root@vm5 ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
驗證
- 真機上新增到達VIP的路由
[wisan@fyj ~]$ sudo route add -host 172.16.225.225/32 gw 192.168.225.1 dev vmnet8
[wisan@fyj ~]$ route -nv
[wisan@fyj ~]$ route -nv
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.43.1 0.0.0.0 UG 600 0 0 wlp4s0
172.16.105.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.225.225 192.168.225.1 255.255.255.255 UGH 0 0 0 vmnet8
192.168.43.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp4s0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.225.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
- 真機上訪問web服務
[wisan@fyj ~]$ curl 172.16.225.225
rs2
[wisan@fyj ~]$ curl 172.16.225.225
rs1
[wisan@fyj ~]$ curl 172.16.225.225
rs2
[wisan@fyj ~]$ curl 172.16.225.225
rs1
[wisan@fyj ~]$ curl -k https://172.16.225.225
rs2
[wisan@fyj ~]$ curl -k https://172.16.225.225
rs1
[wisan@fyj ~]$ curl -k https://172.16.225.225
rs2
[wisan@fyj ~]$ curl -k https://172.16.225.225
rs1