LVS负载均衡+LVS-DR部署

LVS负载均衡+LVS-DR部署

一.负载均衡介绍

负载均衡集群是由多台服务器组成的集群,用于分发和处理客户端请求,以实现高可用性、性能扩展和负载均衡。

在负载均衡集群中,有一台或多台负载均衡器(Load Balancer)作为前端接收客户端请求,并根据预设的负载均衡算法将请求分发给后端的多台服务器(Backend Servers)。负载均衡器可以根据不同的算法,如轮询、加权轮询、最小连接数、源地址哈希等,选择合适的后端服务器来处理请求。

负载均衡集群的优势包括:

1. 高可用性:通过将负载分布到多台服务器上,即使其中一台服务器出现故障,其他服务器仍可以继续处理请求,提高了系统的可用性。
2. 性能扩展:负载均衡集群可以将请求分发到多台服务器上,从而实现请求的并行处理,提高了系统的性能和吞吐量。
3. 负载均衡:负载均衡器可以根据预设的算法将请求分发到后端服务器,平衡服务器的负载,避免单个服务器过载。
4. 可伸缩性:负载均衡集群可以根据需要增加或减少后端服务器,以适应不同的负载情况和业务需求。

常用的负载均衡集群解决方案:

1. LVS    4层负载
2. haproxy   4层/7层负载
3. nginx    7层负载
4. SLB    云资源负载,同时实现高可用,需要购买
5. F5    硬件负载设备,需要购买设备进行负载均衡

高可用集群HA(High Available)

高性能集群(预测地震、天气预报、安全加密算法研究)

二.LVS集群介绍

lvs的组成

  • 负载调度器(Load Balancer):负载调度器将请求分发给多个服务器,以实现负载均衡。它可以根据不同的算法(如轮询、权重等)决定将请求发送到哪个服务器。
  • IP 虚拟服务器(IPVS):IPVS 是 LVS 的核心组件。它作为一个核心模块,能够截获并转发来自客户端的请求,并将请求转发到后端的真实服务器。
  • 后端服务器(Real Servers):后端服务器是承载实际服务的物理或虚拟服务器。它们处理来自负载调度器的请求,并返回响应给客户端。

lvs的工作原理

LVS(Linux Virtual Server)的工作原理可以简单概括为以下几个步骤:
  1. 客户端发送请求:当客户端发送请求时,请求将到达负载调度器(Load Balancer)。
  2. 负载调度器接收请求:负载调度器接收到客户端的请求,并根据预定义的负载均衡算法(如轮询、权重等)确定将请求发送给哪个后端服务器。
  3. 负载调度器转发请求:负载调度器将请求转发给后端服务器上的 IP 虚拟服务器(IPVS)。
  4. IP 虚拟服务器接收请求:IPVS 接收到请求后,根据配置的转发规则,将请求转发给实际的后端服务器。
  5. 后端服务器处理请求:后端服务器接收到请求后,处理该请求并生成响应。
  6. 响应返回给负载调度器:后端服务器将处理后的响应发送回负载调度器。
  7. 负载调度器返回响应给客户端:负载调度器接收到响应后,将响应转发给最初的客户端。
通过以上步骤,LVS 实现了负载均衡和高可用性。它将客户端的请求分发到多个后端服务器上,以提高系统的性能和可扩展性,并确保服务的高可用性,即使其中一台后端服务器发生故障,其他正常运行的服务器仍然可以继续提供服务。

lvs的三种工作模式

1、基于NAT的LVS模式负载均衡
NAT(network address translation) 网络地址转换,其主要原理是修改数据报头,使得位于企业内部的私有ip地址可以访问外王,以及外部用户可以访问位于公司内部的私有的ip主机。

2、 基于TUN的LVS负载均衡
LVS(NAT)模式的集群环境中,所有数据包的请求的回应的哦欧需要经过调度器处理,但是在TUN模式中,将NAT模式中的问题有所解决。因为数据包的请求包往往远远小于响应数据包的大小。因为响应数据包中有包含客户需要的具体数据所以,TUN的原理就是将请求与响应数据分离。,让调度器仅仅处理数据请求,让真实的服务器响应数据包直接返回给客户。

3、LVS(DR)负载均衡
在DR模式下,LVS负载均衡器作为网关插入到后端服务器和客户端之间。客户端请求到达LVS负载均衡器后,LVS负载均衡器会将请求直接转发给后端服务器,而响应流量则直接返回给客户端,绕过LVS负载均衡器。这样可以避免了请求流量经过LVS负载均衡器的转发,提高了性能。

三.LVS-DR部署

使用DR模型:

1.实现http和https两种负载均衡集群

2.各RS都要提供同一个私钥和同一个证书

实验准备

实验机说明主机名ip地址系统
负载调度器DR192.168.10.130(VIP)CentOS-8
后端服务器1RS1192.168.10.131(VIP)CentOS-8
后端服务器2RS2192.168.10.133(VIP)CentOS-8

四.http负载均衡集群搭建

关闭防火墙设置selinux

[root@localhost ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# 
[root@localhost ~]# setenforce 0
[root@RS1 ~]# vim /etc/selinux/config 

在RS1、RS2上安装httpd

yum -y install httpd

设置开机自启

systemctl enable --now httpd

重启主机

reboot

RS1

[root@RS1 ~]# ss -antl
State       Recv-Q       Send-Q             Local Address:Port             Peer Address:Port      Process      
LISTEN      0            128                      0.0.0.0:22                    0.0.0.0:*                      
LISTEN      0            128                         [::]:22                       [::]:*                      
LISTEN      0            128                            *:80                          *:*                      
[root@RS1 ~]# 

RS2

[root@RS2 ~]# ss -antl
State        Recv-Q        Send-Q               Local Address:Port               Peer Address:Port       Process       
LISTEN       0             128                        0.0.0.0:22                      0.0.0.0:*                        
LISTEN       0             128                              *:80                            *:*                        
LISTEN       0             128                           [::]:22                         [::]:*                        
[root@RS2 ~]# 

在两台主机的网页文件中写入不同的内容以便区分两台主机

RS1

[root@RS1 ~]# echo "RS1" > /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html
RS1
[root@RS1 ~]# 

在这里插入图片描述

RS2

[root@RS2 ~]# echo "RS2" > /var/www/html/index.html
[root@RS2 ~]# cat /var/www/html/index.html
RS2
[root@RS2 ~]# 

在这里插入图片描述

搭建HTTP负载均衡集群

安装net-tools软件包(三台主机上都要操作)

[root@DR ~]# yum -y install net-tools
[root@RS1 ~]# yum -y install net-tools
[root@RS2 ~]# yum -y install net-tools

在DR主机上配置VIP(虚拟IP地址)

#此时DR主机的网卡上只有一个192.168.10.130的IP地址,我们要在网卡上再添加一个虚拟ip
[root@DR ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.130  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe15:844b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:15:84:4b  txqueuelen 1000  (Ethernet)
        RX packets 662  bytes 402323 (392.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 575  bytes 47892 (46.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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)
        RX packets 18  bytes 1238 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1238 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@DR ~]# 

添加VIP(虚拟IP地址)

#使用ifconfig命令给ens160网卡添加IP地址、子网掩码、和广播地址
[root@DR ~]# ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up

#注意,这种命令行添加虚拟IP的方式在主机重启后会失效,所以要把这行命令写进/etc/rc.local这个脚本文件里面,每次开机时都会执行一遍

[root@DR ~]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up   #写到文件里面
[root@DR ~]# 

查看网卡

[root@DR ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.130  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe15:844b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:15:84:4b  txqueuelen 1000  (Ethernet)
        RX packets 752  bytes 410735 (401.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 652  bytes 55782 (54.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens160:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500    #这是刚刚添加的ip
        inet 192.168.10.250  netmask 0.0.0.0  broadcast 192.168.200.250
        ether 00:0c:29:15:84:4b  txqueuelen 1000  (Ethernet)

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)
        RX packets 18  bytes 1238 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1238 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@DR ~]# 

在RS1和RS2主机上配置RIP

首先修改网卡内核参数:编辑/etc/sysctl.conf文件(在 RS1 和 RS2 上操作)

RS1

[root@RS1 ~]# vim /etc/sysctl.conf
#在配置文件最后添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

RS2

[root@RS2 ~]# vim /etc/sysctl.conf
#在配置文件最后添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

在lo接口配置VIP

注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告

RS1

[root@RS1 ~]# ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up
[root@RS2 ~]# ifconfig
.......
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.250  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)

RS2

[root@RS2 ~]# ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up
......
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.250  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)

同样,这些也要写到/etc/rc.local里面

RS1

[root@RS1 ~]# cat /etc/rc.local
......
touch /var/lock/subsys/local
ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up   #写进文件

[root@RS1 ~]# 

RS2

[root@RS2 ~]# cat /etc/rc.local
......
touch /var/lock/subsys/local
ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up   #写进文件

配置路由信息

DR

[root@DR ~]# route add -host 192.168.10.250 dev ens160
[root@DR ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 ens160

RS1

[root@RS1 ~]# route add -host 192.168.10.250 dev lo:0
[root@RS1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@RS1 ~]# 

RS2

[root@RS2 ~]# route add -host 192.168.10.250 dev lo:0
[root@RS2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@RS2 ~]# 

#路由添加也要写进/etc/rc.local

DR

[root@DR ~]# cat /etc/rc.local
......
touch /var/lock/subsys/local
ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up
route add -host 192.168.10.250 dev ens160

RS1和RS2

[root@RS1 ~]# cat /etc/rc.local
......
touch /var/lock/subsys/local
ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up
route add -host 192.168.10.250 dev lo:0   #添加这一行

在DR上添加规则

安装ipvsadm软件包

[root@DR ~]# yum -y install ipvsadm

添加规则

#这个规则是DR调度器把访问请求接收到80端口,DR调度器本身没有80端口,而是把访问请求转发给后端服务器的80端口
[root@DR ~]# ipvsadm -A -t 192.168.10.250:80 -s wrr
[root@DR ~]# ss -antl
State         Recv-Q        Send-Q               Local Address:Port               Peer Address:Port       Process       
LISTEN        0             128                        0.0.0.0:22                      0.0.0.0:*                        
LISTEN        0             128                           [::]:22                         [::]:*                        
[root@DR ~]# 

继续添加规则

[root@DR ~]# ipvsadm -a -t 192.168.10.250:80 -r 192.168.10.131:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.10.250:80 -r 192.168.10.133:80 -g

查看规则

[root@DR ~]# 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.10.250:80 wrr   
  -> 192.168.10.131:80            Route   1      0          0         
  -> 192.168.10.133:80            Route   1      0          0         
 #当有访问请求访问192.168.10.250的80端口时转发到192.168.10.131和192.168.10.133的80端口上
[root@DR ~]# 

保存规则

[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm

#注意,规则虽然保存了但是主机重启后不会主动开启规则

输入下面这个密码恢复规则

[root@DR ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
Service already exists
Destination already exists
Destination already exists
[root@DR ~]# 

把这个命令加入到/etc/rc.local文件中,这样开机时也会同时恢复规则

[root@DR ~]# cat /etc/rc.local 
......
touch /var/lock/subsys/local
ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up
route add -host 192.168.10.250 dev ens160

测试

命令行访问测试

[root@RS2 ssl]# curl http://192.168.10.250
RS2
[root@RS2 ssl]# 

浏览器访问测试

在这里插入图片描述

http负载均衡集群搭建完成

五.https负载均衡集群搭建

生成密钥对和证书步骤

创建所需的CA目录以及文件

[root@DR ~]# for dir in certs crl newcerts private ; do mkdir -pv /etc/pki/CA/$dir;done
mkdir: created directory '/etc/pki/CA'
mkdir: created directory '/etc/pki/CA/certs'
mkdir: created directory '/etc/pki/CA/crl'
mkdir: created directory '/etc/pki/CA/newcerts'
mkdir: created directory '/etc/pki/CA/private'
[root@DR ~]# 
[root@DR ~]# cd /etc/pki/CA/
[root@DR CA]# ls
certs  crl  newcerts  private
[root@DR CA]# 

生成密钥对

[root@DR CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus (2 primes)
......+++++
.............................................................................+++++
e is 65537 (0x010001)
[root@DR CA]# 

生成自签署证书和证书索引数据库文件,制定第一个颁发证书的序列号

[root@DR CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
...
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HB
Locality Name (eg, city) [Default City]:WH
Organization Name (eg, company) [Default Company Ltd]:runtime
Organizational Unit Name (eg, section) []:runtime
Common Name (eg, your name or your server's hostname) []:runtime
Email Address []:      #这里直接回车
[root@DR CA]# 
[root@DR CA]# touch index.txt
[root@DR CA]# echo 01 > serial
[root@DR CA]# 

在装有httpd服务的RS1主机上生成密钥对

[root@RS1 ~]# mkdir /etc/httpd/ssl
[root@RS1 ~]# 
[root@RS1 ~]# cd /etc/httpd/ssl/
[root@RS1 ssl]# 
[root@RS1 ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
Generating RSA private key, 2048 bit long modulus (2 primes)
.....................................+++++
............................................................+++++
e is 65537 (0x010001)
[root@RS1 ssl]# 

生成证书签署请求

[root@RS1 ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
...
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HB
Locality Name (eg, city) [Default City]:WH
Organization Name (eg, company) [Default Company Ltd]:runtime
Organizational Unit Name (eg, section) []:runtime
Common Name (eg, your name or your server's hostname) []:runtime
Email Address []:     #这里直接回车

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:      #这里直接回车     
An optional company name []:      #这里直接回车
[root@RS1 ssl]# 
[root@RS1 ssl]# ls
httpd.csr  httpd.key
[root@RS1 ssl]# 

把证书签署请求文件发送给CA

[root@RS1 ssl]# scp httpd.csr root@192.168.10.130:/root
root@192.168.10.130's password: 
Permission denied, please try again.
root@192.168.10.130's password: 
httpd.csr                                                                     100%  989     1.8MB/s   00:00    
[root@RS1 ssl]# 

CA签署证书并发给RS1和RS2主机

[root@DR ~]# openssl ca -in /root/httpd.csr -out httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Oct  8 12:25:28 2023 GMT
            Not After : Oct  7 12:25:28 2024 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HB
            organizationName          = runtime
            organizationalUnitName    = runtime
            commonName                = runtime
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                67:EC:F0:4B:68:1A:75:5D:08:FD:A1:6F:A8:90:ED:5D:2D:96:58:46
            X509v3 Authority Key Identifier: 
                keyid:F9:CC:AF:25:3C:75:48:6C:C9:AE:61:34:EE:03:9E:F8:43:F2:B9:F1
Certificate is to be certified until Oct  7 12:25:28 2024 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@DR ~]# 
[root@DR ~]# ls
anaconda-ks.cfg  httpd.crt  httpd.csr
[root@DR ~]# 

在DR主机上将签署好的证书httpd.crt和生成的自签署证书cacert.pem发送给RS1和RS2主机

DR

[root@DR ~]# scp httpd.crt root@192.168.10.131:/etc/httpd/ssl
The authenticity of host '192.168.10.131 (192.168.10.131)' can't be established.
ECDSA key fingerprint is SHA256:z2F8hfFO4+Z6J0ZDbXo2fsytcMRBVqsUnM2LdvOjWCs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.131' (ECDSA) to the list of known hosts.
root@192.168.10.131's password: 
httpd.crt                                                                             100% 4424     4.0MB/s   00:00    
[root@DR ~]# scp /etc/pki/CA/cacert.pem root@192.168.10.131:/etc/httpd/ssl
root@192.168.10.131's password: 
cacert.pem                                                                            100% 1310     1.9MB/s   00:00    
[root@DR ~]# 

RS1

[root@RS1 ~]# cd /etc/httpd/ssl/
[root@RS1 ssl]# ls
cacert.pem  httpd.crt  httpd.csr  httpd.key
[root@RS1 ssl]# 

RS2

[root@RS2 ~]# mkdir /etc/httpd/ssl

DR

[root@DR ~]# scp httpd.crt root@192.168.10.133:/etc/httpd/ssl
root@192.168.10.133's password: 
httpd.crt                                                                             100% 4424     3.4MB/s   00:00    
[root@DR ~]# scp /etc/pki/CA/cacert.pem root@192.168.10.133:/etc/httpd/ssl
root@192.168.10.133's password: 
cacert.pem                                                                            100% 1310     1.5MB/s   00:00    
[root@DR ~]# 

RS2

[root@RS2 ssl]# ls
cacert.pem  httpd.crt

配置https

将RS1主机上的密钥对拷贝至RS2主机,安装模块

RS1

[root@RS1 ssl]# scp httpd.key root@192.168.10.133:/etc/httpd/ssl
The authenticity of host '192.168.10.133 (192.168.10.133)' can't be established.
ECDSA key fingerprint is SHA256:AOQsguPRyPBU/A2KBE9FlV6d+Q0A9b+Z9CK3gHvDg3k.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.133' (ECDSA) to the list of known hosts.
root@192.168.10.133's password: 
httpd.key                                                                     100% 1679     1.6MB/s   00:00 

RS2

[root@RS2 ssl]# ls
cacert.pem  httpd.crt  httpd.key
[root@RS2 ssl]# 

在RS1和RS2主机上安装mod_ssl模块

[root@RS1 ~]# yum -y install mod_ssl

[root@RS2 ~]# yum -y install mod_ssl

在 RS1 和 RS2 主机上配置ssl

RS1

[root@RS1 ~]# vim /etc/httpd/conf.d/ssl.conf
......
/SSLCertificateFile    #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
SSLCertificateFile /etc/httpd/ssl/httpd.crt
......
/SSLCertificateKeyFile   #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
......
/SSLCACertificateFile     #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
/SSLCACertificateFile /etc/httpd/ssl/cacert.pem  #这一行要去掉注释
......


RS2

[root@RS2 ~]# vim /etc/httpd/conf.d/ssl.conf
......
/SSLCertificateFile    #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
SSLCertificateFile /etc/httpd/ssl/httpd.crt
......
/SSLCertificateKeyFile   #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
......
/SSLCACertificateFile     #在命令行输入这个,找到下面这一行后缀改为文件所在的位置
SSLCACertificateFile /etc/httpd/ssl/cacert.pem    #这一行要去掉注释
......

启动httpd服务

httpd服务端口号是443

RS1

[root@RS1 ~]# systemctl restart httpd
[root@RS1 ~]# ss -antl
State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port      Process      
LISTEN       0            128                      0.0.0.0:22                    0.0.0.0:*                      
LISTEN       0            128                         [::]:22                       [::]:*                      
LISTEN       0            128                            *:443                         *:*                      
LISTEN       0            128                            *:80                          *:*                      
[root@RS1 ~]# 

RS2

[root@RS2 ssl]# systemctl restart httpd
[root@RS2 ssl]# ss -antl
State         Recv-Q        Send-Q               Local Address:Port               Peer Address:Port       Process       
LISTEN        0             128                        0.0.0.0:22                      0.0.0.0:*                        
LISTEN        0             128                              *:80                            *:*                        
LISTEN        0             128                           [::]:22                         [::]:*                        
LISTEN        0             128                              *:443                           *:*                        
[root@RS2 ssl]# 

在DR主机上配置规则

#这个规则是DR调度器把访问请求接收到443端口,DR调度器本身没有443端口,而是把访问请求转发给后端服务器的443端口
[root@DR ~]# ipvsadm -A -t 192.168.10.250:443 -s wrr
#当有访问请求访问192.168.10.250的443端口时转发到192.168.10.131和192.168.10.133的443端口上
[root@DR ~]# ipvsadm -a -t 192.168.10.250:443 -r 192.168.10.131:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.10.250:443 -r 192.168.10.133:80 -g

[root@DR ~]# 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.10.250:80 wrr
  -> 192.168.10.131:80            Route   1      0          0         
  -> 192.168.10.133:80            Route   1      0          0         
TCP  192.168.10.250:443 wrr
  -> 192.168.10.131:443           Route   1      0          0         
  -> 192.168.10.133:443           Route   1      0          0         
[root@DR ~]# 

保存规则

[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm

#注意,规则虽然保存了但是主机重启后不会主动开启规则

输入下面这个密码恢复规则

[root@DR ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
Service already exists
Destination already exists
Destination already exists
Service already exists
Destination already exists
Destination already exists
[root@DR ~]# vim /etc/rc.local 
[root@DR ~]# 

把这个命令加入到/etc/rc.local文件中,这样开机时也会同时恢复规则

[root@DR ~]# cat /etc/rc.local 
......
touch /var/lock/subsys/local
ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up
route add -host 192.168.10.250 dev ens160

测试

命令行访问测试

[root@RS1 ~]# curl -k https://192.168.10.250
RS1
[root@RS1 ~]# 

浏览器访问

-> 192.168.10.133:443 Route 1 0 0
[root@DR ~]#


保存规则

[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm


#注意,规则虽然保存了但是主机重启后不会主动开启规则

输入下面这个密码恢复规则

```shell
[root@DR ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
Service already exists
Destination already exists
Destination already exists
Service already exists
Destination already exists
Destination already exists
[root@DR ~]# vim /etc/rc.local 
[root@DR ~]# 

把这个命令加入到/etc/rc.local文件中,这样开机时也会同时恢复规则

[root@DR ~]# cat /etc/rc.local 
......
touch /var/lock/subsys/local
ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up
route add -host 192.168.10.250 dev ens160

测试

命令行访问测试

[root@RS1 ~]# curl -k https://192.168.10.250
RS1
[root@RS1 ~]# 

浏览器访问

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值