(18)lvs-nat的https模式设置

前言:LVS工作模式分为NAT模式、TUN模式、以及DR模式。在lvs服务器上,设置虚拟ip并做负载均衡使用。使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

官方站点是:http://www.linuxvirtualserver.org

ipvsadm:用户空间的命令行工具,用于管理集群服务器

一、lvs的基本语法和三种模式

NAT模式原理:

这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端

DR模式原理:

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

TUN模式(隧道模式)

LVS/TUN的工作流程图如下所示,它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。

-A 添加一个集群服务

-E 修改已添加的集群服务

-D 删除虚拟服务

-C 清空整个表

-R 从标准输入重载

-S 保存值到标准输出

-a 向指定的client server中添加real server

-e 修改RS

-d 删除真实服务

-L/-l  列出表

-t 服务器地址是host[:port],tcp协议

-u 服务器地址是host[:port],udp协议

-r 服务器地址主机和端口,只支持端口映射的LVS类型才允许此处使用和集群服务中的不同端口

-g dr(direct routing)(default)模式

-i tun模式

-m nat模式

-w 实际服务器容器,指定权重

-n  数字格式显示ip和port,注意-n只能写在-L之后

语法:

ipvsadm  -A -t ip:port -s rr

ipvsadm  -a  -t  ip:port  -r   ip:port  -g/m/i

二、LVS调度算法十种

2.1静态调度算法(4种)

  1. 轮询调度rr

均等的对待每一台服务器,不管服务器上的实际连接数和系统负载

  1. 加权论调wrr

调度器可以自动问询真实服务器的负载情况,并动态调整权值

3源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

4目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

2.2动态调度算法(6种)

5最少链接 lc
动态地将网络请求调度到已建立的连接数最少的服务器上
如果集群真实的服务器具有相近的系统性能,采用该算法可以较好的实现负载均衡

6 加权最少链接 wlc
调度器可以自动问询真实服务器的负载情况,并动态调整权值
带权重的谁不干活就给谁分配,机器配置好的权重高

7 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

8 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

9 最少期望延迟 sed
不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙

10 永不排队 nq
无需队列,如果有realserver的连接数为0就直接分配过去

三、实验

1、实验环境

四台主机,一台dr设置虚拟IP的控制端口,两台做轮循的主机,还要一台客户端访问,看实验结果。关掉防火墙和selinux,所以网关相同,删掉dns。

dr做虚拟ip和CA机构

rs1和rs2ip为192.168.121.30和50

dr为192.168.121.40

rs1和rs2做真实IP,负载均衡的ip

3.1、设置CA证书机构

[root@dr ~]# mkdir -p /etc/pki/CA/private/     

创建私钥的目录

[root@dr ~]# cd /etc/pki/CA/

[root@dr CA]# (umask 077;openssl genrsa -out private/cakey.pem 2024)

创建证书文件

[root@dr CA]# openssl rsa -in private/cakey.pem -pubout 

查看CA证书的私钥

[root@dr CA]#  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 1024
用私钥生成双方要签署的合同cacert.pem,-x509加密,-new生成证书,-days证书有效的天数

记住填写的内容,省份国家,单位和邮箱,双方要一致

[root@dr CA]# touch index.txt

[root@dr CA]# echo 02 > serial

填写一个序列号

3.2设置rs1CA客户端

[root@rs1 ~]# yum -y install mod_ssl httpd

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

创建httpd下面的ssl协议文件
[root@rs1 ~]#  cd /etc/httpd/ssl/
[root@rs1 ssl]# (umask 077;openssl genrsa -out httpd.key 2048)

生成httpd客户端的私钥,后面天数是2048天,权限是600
[root@rs1 ssl]#  openssl req -new -key httpd.key -days 1024 -out httpd.csr

内容与CA设置的一致

最后两个敲回车,不设置密码

-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:AH
Locality Name (eg, city) [Default City]:AQ
Organization Name (eg, company) [Default Company Ltd]:HY
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:laiyingx
Email Address []:laiyingx.example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
 

[root@rs1 ssl]# ls
httpd.csr  httpd.key
将httpd客户端签署的证书发给CA机构。root目录下

[root@rs1 ssl]# scp httpd.csr root@192.168.121.40:/root/

[root@dr ~]# mkdir /etc/pki/CA/newcerts

[root@dr CA]# cd
[root@dr ~]# openssl ca -in httpd.csr -out httpd.crt -days 1024

输入y

双方签署完成,生成最后的证书httpd.crt,需要发给客户端192.168.121.50rs1

[root@dr ~]# scp httpd.crt root@192.168.121.50:/etc/httpd/ssl

双方签署完成的httpd.crt证书,双方保留

[root@dr ~]#  scp /etc/pki/CA/cacert.pem root@192.168.121.50:/etc/httpd/ssl

将官方可以给别人看的证书发给客户端供用户使用查看

3.3rs2的客户端CA设置ssl

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

创建存放ssl文件的目录

因为两个是一样的网站,内容也是一样,做负载均衡的,所以使用同一份CA证书就行

将rs1的相关文件发给rs2的ssl目录下

[root@rs1 ssl]# scp cacert.pem httpd.crt httpd.key root@192.168.121.30:/etc/httpd/ssl

更改三个地方,两个路径,一个打开再更改路径

[root@rs1 ~]# vim /etc/httpd/conf.d/ssl.conf   两台都要改

SSLCertificateFile /etc/httpd/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

SSLCACertificateFile /etc/httpd/ssl/cacert.pem

[root@rs2 ~]# vim /etc/httpd/conf.d/ssl.conf 

[root@rs1 ~]# systemctl restart httpd
[root@rs2 ~]# systemctl restart httpd

两台都重启

3.4测试https

关掉rs1/2的selinux和防火墙,再客户端访问成功

[root@client ~]# curl -k https://192.168.121.30
rs2
[root@client ~]# curl -k https://192.168.121.50
rs1

四、lvs的NAT模式

4.1添加一块网卡

需要在dr添加一块网卡,因为nat模式需要使用,也是三种模式中,唯一需要额外添加一块网卡的

#ip a

查看网卡信息,这块网卡是20网段,第二块网卡一定要设置为仅主机模式,

与121网段不一样。

[root@dr ~]# nmcli connection delete Wired\ connection\ 1 

删除原来ens192的,名字太长

[root@dr ~]# nmcli connection add con-name ens192 ifname ens192 type ethernet

添加一块网卡名字为ens192,设备网卡名为ens192,类型以太网

root@dr ~]# nmcli connection modify ens192 ipv4.addresses 192.168.20.66/24 ipv4.method manual connection.autoconnect yes

设置IP,重启网卡
[root@dr ~]# nmcli connection down ens192 
[root@dr ~]# nmcli connection up ens192 

4.2、添加lvs的使用规则,打开路由转发
 

[root@dr ~]# vim /etc/sysctl.conf 

最后写上下面 一行,开启路由转发,不同网段可以通信

net.ipv4.ip_forward = 1
[root@dr ~]# sysctl -p    //执行运行,可以看到写上的内容
net.ipv4.ip_forward = 1

[root@dr ~]# yum -y install ipvsadm
安装ipvsadm命令

[root@dr ~]# ipvsadm -A -t 192.168.20.66:443 -s rr
[root@dr ~]#  ipvsadm -a -t 192.168.20.66:443 -r 192.168.121.50 -m
[root@dr ~]#  ipvsadm -a -t 192.168.20.66:443 -r 192.168.121.30 -m
[root@dr ~]#  ipvsadm -Ln
[root@dr ~]#  ipvsadm -Sn > /etc/sysconfig/ipvsadm

[root@dr ~]# systemctl restart ipvsadm.service

[root@rs1 html]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rs1 html]# systemctl restart NetworkManager
[root@rs1 html]# nmcli connection up ens160 

删除dns,网关统一

[root@dr2 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@dr2 ~]# systemctl restart NetworkManager
[root@dr2 ~]# nmcli connection up ens160 

不知道为什么转接不了,不写了,好烦,五条命令的事转接不了。写不下去了,恢复快照,下一个实验了

五、lvs的DR模式

5.1实验环境

关掉防火墙和selinux,删掉dns,网关一样,下载好net-tools和ipvfadm工具和httpd

因为是mac地址更改,所以这里实验lo接口,只需要一张网卡在dr上,就是三个mac地址转来转去,焯,我真的烦了

5.2设置网页,看效果

[root@rs1 ~]#  echo "RS1" > /var/www/html/index.html
[root@rs1 ~]# yum -y install httpd

两个真实ip设置网页看效果

[root@rs2 ~]#  echo "RS2" > /var/www/html/index.html
[root@rs2 ~]# yum -y install httpd

5.2设置虚拟ip,删除dns,所以网关改为一致相同

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

[root@dr ~]# yum -y install net-tools 

[root@rs1~]# yum -y install net-tools 

[root@rs2~]# yum -y install net-tools 

# vim /etc/NetworkManager/system-connections/ens160.nmconnection 三台的dns都要删除,网关改为相同

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

[root@dr ~]# yum -y install net-tools   ,在dr,也就是设置虚拟地址vip的主机上安装网络工具包

[root@dr ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up

broadcast是回环地址127.0.0.1,设置自己的ip就行,虚拟地址是192.168.121.66,都是32位子网掩码,因为广播,32位子网掩码区分更细致的IP地址。自己想吧,不想打字了

5.3、s1和rs2配置arp内核参数

arp协议为mac地址转化为ip的一种协议叫arp
[root@rs1 ~]# vim /etc/sysctl.conf 
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@rs2 ~]# vim /etc/sysctl.conf 
[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#将对应网卡设置为只回应目标IP为自身接口地址的ARP请求

net.ipv4.conf.all.arp_ignore = 1

#将ARP请求的源IP设置为所有接口的IP,也就是RIP

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

5.4RS上配置VIP

一定要先配置好内核参数,再配置VIP,如果先配置VIP,VIP配置好后会立即通告给所有人,而修改内核参数就是为了不通告。

#yum -y install net-tools

[root@rs1 ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up
[root@rs1 ~]# route add -host 192.168.121.50/32 dev lo

[root@rs2 ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up
[root@rs2 ~]# route add -host 192.168.121.50/32 dev lo

添加路由


[root@dr ~]#  ipvsadm -A -t 192.168.121.50:80 -s rr

-A添加集群,-t是指tcp协议,后面接虚拟地址vip的80端口,-s指定类型为轮询
[root@dr ~]#  ipvsadm -a -t 192.168.121.50:80  -r  192.168.121.20:80 -g

-a添加IP地址,真实的。-t为指定为tcp协议,后面接虚拟ip和端口。-r添加真实ip和接口,-g指定模式为dr模式
[root@dr ~]#  ipvsadm -a -t 192.168.121.50:80  -r  192.168.121.30: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.121.66:80 rr
  -> 192.168.121.20:80            Route   1      0          0         
  -> 192.168.121.30:80            Route   1      0          0   

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

保存刚修改的内容

#ipvsadm -C  //大写的c,清除所有配置

[root@dr ~]# systemctl restart ipvsadm

[root@dr ~]# systemctl enable ipvsadm


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值