LVS-NAT LVS-DR

什么是集群?

一组通过高速网络互联的计算组,并以单一系统的模式加以管理,将很多服务器集中在一起,提供同一种服务,在客户端看起来就像是只有一个服务器。任务调度是集群系统中的技术核心。

集群的目的:

    提高性能:如计算密集型应用,如:天气预报、核试验模拟

降低成本:相对百万美元级的超级计算机,价格便宜

提高可扩展性:只要增加集群节点即可

增强可靠性:多个节点完成相同功能,避免单点失败

集群分类:

HPC:高性能计算集群,解决复杂的科学问题

LB:负载均衡集群,客户端负载在计算机集群中尽可能的平均分摊

HA:高可用集群,避免单点故障,当一个系统发生故障时,可以快速迁移

LVS概述

LVS项目介绍:

Linux 虚拟服务器(LVS)是章文嵩在国防科技大学就读博士期间创建的

LVS可以实现高可用的、可伸缩的Web、Mail、Cache和Media等网络服务

最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群

LVS集群组成

前端:负载均衡层,由一台或多台负载调度器构成

中间:服务器群组层,由一组实际运行应用服务的服务器组成

底端:数据共享存储层,提供共享存储空间的存储区域

LVS术语:

Director Server:调度服务器 【lvs】

将负载分发到Real Server的服务器

Real Server:真实服务器 【web】

真正提供应用服务的服务器

VIP:虚拟IP地址

公布给用户访问的虚拟IP地址

RIP:真实IP地址

集群节点上使用的IP地址

DIP:调度器连接节点服务器的IP地址

LVS工作模式

VS/NAT:

通过网络地址转换实现的虚拟服务器

大并发访问时,调度器的性能成为瓶颈

VS/DR:

直接使用路由技术实现虚拟服务器

节点服务器需要配置VIP,注意MAC地址广播

VS/TUN:

通过隧道方式实现虚拟服务器

负载均衡调度算法:

LVS目前实现了10种调度算法

常用调度算法有4种

轮询(Round Robin):将客户端请求平均分发到Real Server

加权轮询(Weighted Round Robin):根据Real Server权重值进行轮询调度

最少连接(Least Connections):选择连接数最少的服务器

加权最少连接( Weighted Least Connections ):根据Real Server权重值,选择连接数最少的服务器

源地址散列(Source Hashing):根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器

其他调度算法:基于局部性的最少链接

  带复制的基于局部性最少链接

  目标地址散列(Destination Hashing)

  最短的期望的延迟

  最少队列调度

准备LAMP分离环境

一,准备四台虚拟机,全新的,免密登录

vh05.tedu.cn 192.168.4.5 mysql

vh06.tedu.cn 192.168.4.6 web

vh07.tedu.cn 192.168.4.7 web

vh08.tedu.cn 192.168.4.8 lvs

二,安装web服务器

1.在vh06/vh07上安装软件包

[root@vh06 ~]# yum -y install httpd php php-mysql

[root@vh06 ~]# systemctl restart httpd

[root@vh06 ~]# systemctl enable httpd

三,配置数据库服务器,在vh05上

[root@vh05 ~]# yum -y install mariadb-server

[root@vh05 ~]# systemctl restart mariadb

[root@vh05 ~]# systemctl enable mariadb

[root@vh05 ~]# mysql

MariaDB [(none)]> grant all on . to ‘admin’@”%” identified by “tedu.cn”;

四,在vh06上安装Discuz

[root@room9pc01 ~]# scp -r 888888/项目/Discuz_X3.3_SC_UTF8.zip 192.168.4.6:/root

[root@vh06 ~]# unzip Discuz_X3.3_SC_UTF8.zip

[root@vh06 ~]# cp -r upload/ /var/www/html/bbs

[root@vh06 ~]# chown -R apache.apache /var/www/html/bbs

[root@room9pc01 ~]# firefox http://192.168.4.6/bbs &

同意—->下一步—-> 数据库服务器:192.168.4.5—->数据库用户名: admin—–>数据库密码:tedu.cn

管理员账号:admin—>密码随便(论坛帐号)—>下一步

登录时,输入的是论坛的密码

管理中心:输入的是授权的密码

模块管理中心:输入的是论坛帐号密码—->论坛

[root@vh05 ~]# mysql

MariaDB [(none)]> use ultrax

MariaDB [ultrax]> show tables;

MariaDB [ultrax]> desc pre_common_member;

MariaDB [ultrax]> select username,email from pre_common_member;

+———-+——————+

| username | email |

+———-+——————+

| admin | admin@admin.com |

| haha | 123456789@qq.com |

+———-+——————+

MariaDB [ultrax]> desc pre_forum_post;

MariaDB [ultrax]> select author,subject,message from pre_forum_post;

+——–+—————-+——————–+

| author | subject | message |

+——–+—————-+——————–+

| admin | hfdbvgewtkhtrj | wml/hahah/zuimei

|

+——–+—————-+——————–+

ipvsadm用法:

-Ln 查看命令

-A 添加虚拟服务器

-t tcp协议,设置群集地址

-s 指定负载调度算法

添加、删除服务器节点:

-a 添加真实服务器

-d 删除真实服务器

-r 指定真实服务器(Real Server)的地址

-m 使用NAT模式;-g、-i分别对应DR、TUN模式

-w 为节点服务器设置权重,默认为1

配置LVS-NAT模式

1.在vh08上安装

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

2、在vh06和vh07 web服务器上把网关指向192.168.4.8

nmtui 添加网关

ifdown eth0; ifup eth0

【[root@vh06 html]# nmcli connection modify eth0 ipv4.method manual ipv4.gateway 192.168.4.8 connection.autoconnect yes】

3、在vh08的eth2上配置额外的地址201.1.1.8/24

[root@vh08 ~]# nmtui

[root@vh08 ~]# systemctl restart NetworkManager

【[root@vh08 ~]# nmcli connection add con-name eth2 ifname eth2 type ethernet

[root@vh08 ~]# nmcli connection modify eth2 ipv4.method manual ipv4.addresses 201.1.1.8/24 connection.autoconnect yes

[root@vh08 ~]# nmcli connection up eth2

4、打开vh08的路由转发功能(RHEL7默认已打开,以前版本需要做以下配置)

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

net.ipv4.ip_forward = 1

[root@vh08 ~]# sysctl -p

net.ipv4.ip_forward = 1 让内核参数生效

[root@vh08 ~]# sysctl -a 查看所有的内核参数

5.在vh06和vh07上做一个网页

[root@vh06 html]# vim index.html

<我想和你一起吃火锅

[root@vh06 html]# systemctl restart httpd

[root@vh07 html]# vim index.html

你是屎吗?×××的!

[root@vh07 html]# systemctl restart httpd

6、lvs集群配置

(1)创建虚拟服务器,使用tcp的80端口,调度算法是rr

[root@vh08 ~]# ipvsadm -A -t 201.1.1.8:80 -s rr 不加-s选项默认是wlc

(2)向VIP中加入RIP

[root@vh08 ~]# ipvsadm -a -t 201.1.1.8:80 -r 192.168.4.6 -m -w 2

[root@vh08 ~]# ipvsadm -a -t 201.1.1.8:80 -r 192.168.4.7 -m

7、验证

[root@vh08 ~]# ipvsadm -Ln

[root@room8pc16 ~]# firefox http://201.1.1.8/bbs

刷新页面时,按ctrl+f5重新连接服务器

修改调度算法为WRR

[root@vh08 ~]# ipvsadm -E -t 201.1.1.8:80 -s wrr

[root@vh08 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 201.1.1.8:80 wrr

-> 192.168.4.6:80 Masq 2 0 1

-> 192.168.4.7:80 Masq 1 0 1

从规则中移除real server

[root@vh08 ~]# ipvsadm -d -t 201.1.1.8:80 -r 192.168.4.6

[root@vh08 ~]# vim 1.sh

!/bin/bash

RIP1=192.168.4.2

RIP2=192.168.4.3

VIP=201.1.1.4:80

while [ 1 ]

do

for IP in RIP1 R I P 1 RIP2

do

 curl  -I  http://${IP} &> /dev/null

 web_state=$?

 ipvsadm  -Ln  |  grep  ${IP}  &> /dev/null

 ip_in_lvs=$?

 if 

 [ $web_state  -ne  0  -a  $ip_in_lvs  -eq 0 ]

 then

 ipvsadm  -d  -t  $VIP  -r  $IP

 elif

 [ $web_state -eq 0  -a   $ip_in_lvs  -ne 0 ]

 then

 ipvsadm  -a  -t  $VIP  -r  $IP  -m

fi

done

sleep 3

done

[root@vh08 ~]# sh 1.sh &

[root@vh06 html]# systemctl stop httpd

[root@vh08 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 201.1.1.4:80 rr

-> 192.168.4.3:80 Masq 1 0 0

[root@vh06 html]# systemctl restart httpd

[root@vh08 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 201.1.1.4:80 rr

-> 192.168.4.2:80 Masq 1 0 0

-> 192.168.4.3:80 Masq 1 0 0

lvs起动状态管理

[root@vh08 ~]# systemctl stop ipvsadm

[root@vh08 ~]# systemctl restart ipvsadm 重起失败,提示执行journalctl -xe,报错日志是/etc/sysconfig/ipvsadm文件不存在,所以要创建它

查看状态

[root@vh08 ~]# systemctl status ipvsadm 会检查出没有/etc/sysconfig/ipvsadm文件

[root@vh08 ~]# touch /etc/sysconfig/ipvsadm 创建文件

[root@vh08 ~]# ipvsadm -A -t 201.1.1.4:80 -s rr

[root@vh08 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 2

[root@vh08 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m

[root@vh08 ~]# ipvsadm -Ln

[root@vh08 ~]# systemctl restart ipvsadm

[root@vh08 bin]# systemctl enable ipvsadm

[root@vh08 ~]# cat /etc/sysconfig/ipvsadm

-A -t 201.1.1.4:80 -s rr

-a -t 201.1.1.4:80 -r 192.168.4.2:80 -m -w 2

-a -t 201.1.1.4:80 -r 192.168.4.3:80 -m -w 1

配置LVS-DR模式

一、清理LVS-NAT的配置

1、删除lvs规则

[root@vh08 bin]# ipvsadm -D -t 201.1.1.8:80

2、删除eth2的地址

[root@vh08 bin]# nmtui 删除地址,将地址获取改为自动

[root@vh08 bin]# ifdown eth2

【[root@vh08 ~]# nmcli connection delete eth2】

二、配置VIP

1、调度器上配置在vh08的eth0上

[root@vh08 bin]# cd /etc/sysconfig/network-scripts/

[root@vh08 bin]# cd /etc/sysconfig/network-scripts/

[root@vh08 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0

[root@vh08 network-scripts]# vim ifcfg-eth0:0

TYPE=Ethernet

BOOTPROTO=none

NAME=eth0:0

DEVICE=eth0:0

ONBOOT=yes

IPADDR=192.168.4.100

PREFIX=24

[root@vh08 network-scripts]# ifup eth0:0

2、把VIP配置在vh06和vh07两台real server的lo

[root@vh06 html]# cd /etc/sysconfig/network-scripts/

[root@vh06 network-scripts]# cp ifcfg-lo ifcfg-lo:0

[root@vh06 network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.4.100

NETMASK=255.255.255.255 如果写成了255.255.255.0将导致该网段其他主机不管理配置192.168.4.0/24网段的哪个地址,都会出现地址冲突

NETWORK=192.168.4.100

BROADCAST=192.168.4.100

ONBOOT=yes

NAME=lo:0

[root@vh06 network-scripts]# ifup lo:0

三、在WEB服务器上修改内核参数

三台主机都有VIP192.168.4.100。当请求发送过来时,应该是调度器接收请求, real server不要接收。为了实现这个功能,需要修改real server的内核参数。

[root@vh06 ~]# sysctl -a | grep arp_ig

[root@vh06 ~]# echo “net.ipv4.conf.all.arp_ignore = 1” >> /etc/sysctl.conf

[root@vh06 ~]# echo “net.ipv4.conf.lo.arp_ignore = 1” >> /etc/sysctl.conf

[root@vh06 ~]# sysctl -a | grep arp_ann

[root@vh06 ~]# echo “net.ipv4.conf.all.arp_announce = 2” >> /etc/sysctl.conf

[root@vh06 ~]# echo “net.ipv4.conf.lo.arp_announce = 2” >> /etc/sysctl.conf

[root@vh06 ~]# sysctl -p 应用内核参数

四、配置LVS DR规则

[root@vh08 network-scripts]# ipvsadm -A -t 192.168.4.100:80

[root@vh08 network-scripts]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.6 -g

[root@vh08 network-scripts]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.7

验证:

[root@room9pc01 ~]# firefox 192.168.4.100

[root@room9pc01 ~]# curl http://192.168.4.100

我想和你一起吃火锅

[root@room9pc01 ~]# curl http://192.168.4.100

你是屎吗?×××的!

[root@room9pc01 ~]# curl http://192.168.4.100

我想和你一起吃火锅

[root@vh08 network-scripts]# 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.4.100:80 wlc

-> 192.168.4.6:80 Route 1 0 10

-> 192.168.4.7:80 Route 1 0 11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值