Lvs-nat
负载均衡nat模式工作原理讲解
Lvs是LB 的实现方式
LB :负载均衡
Lvs-nat
Directory 负载均衡调度器
Real server 真正负载集群的总称
请求报文
首先客户端请求一个http资源,经过路由器到达directory 的vip 经过路由选择,送到INPUT链上去,INPUT链
查看他的请求资源是个本机,但是本机是个集群,本机并没有web服务提供,根据配置规则,就修改请求资源的目
标地址为真正的real server rip 送给dip,dip查看是送到real server xx的就送给xx啦
响应报文
Real server xx查看请求的资源,马上就开始构建响应报文,构建完响应报文后,通过dip送到directory,dip通过修
改源端口,dip直接从forword链转发到vip,vip在转发给客户端
工作示意图如上图
Vmware1 directory nfs 共享mysql eth0:192.168.1.118/24 eth1:172.16.1.143/16
Vmware2 lamp web host1 eth0:192.168.1.11/24 关闭mysql 安装wordpress
Vmware3 lamp web host2 eth1:192.168.1.12/24 关闭mysql 安装Wordpress
系统均为centos6.5
配置好ip地址和建立好网页,ping 一下看主机是否在线
1、节点real server的配置
Ifconfig eth0 192.168.1.11/24 up 使用虚拟通道3
Route add default gw 192.168.1.11
Yum install httpd mysql-server php php-mysql php-gd -y
Vim /var/www/html 提供网页文件
Service httpd restart
节点二一样配置
2、directory的配置
首先添加一张网卡,配置能让linux正常识别到
Ifconfig eth0 192.168.1.118/24 up 桥接
Ifconfig eth1 172.16.1.143/16 up 使用虚拟通道3
Yum install httpd mysql-server php php-mysql php-gd -y
此时先在directory 测试一下 ping 各节点
Curl http:// 192.168.1.11 测试下个节点的网页是否正常
3、上面的准备环境做好啦,就可以做真正的集群服务啦
先要安装软件 配置好yum 源 yum install ipvsadm -y
不懂软件命令使用可以 man ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
-A 添加集群
-E 修改集群
-C 清空集群配置
-D 删除集群
-a 添加real server 配置
-e 修改real server 配置
-d 删除real server 配置
-m 是开启nat模式
-g 是开启dr模式
-w 算法的权重
-L 列出信息
-n 查看详细信息
echo "1" > /proc/sys/net/ipv4/ip_forward 打开路由间转发功能
配置服务
Ipvsadm -A -t 172.16.1.143:80 -s rr
Ipvsadm -a -t 172.16.1.143:80 -r 192.168.1.11 -m -w 1
Ipvsadm -a -t 172.16.1.143:80 -r 192.168.1.12 -m -w 2
echo "1" > /proc/sys/net/ipv4/ip_forward 开启路由转发机制
配置就成功啦 可以先 curl http://172.16.1.118 查看是否轮询
我们还可以改变集群算法,根据业务不同进行集群切换
Ipvsadm -E -t 172.16.1.118:80 -s lc 再测试结果
各种算法的比较
静态算法
动态算法
4、对实验的升级
用nfs 共享mysql,给两台real server web 安装wordpress提供论坛服务
用源码编译安装搭建 lamp平台 我们可以先搭建一台,然后快速克隆三台出来
Ip地址和上面一样
Directory 提供mysql nfs 的共享
Real server 提供web服务,但是mysql是关闭的
三台虚拟主机系统均是centos6.5
不会lamp源码编译安装的话请看http://1983939925.blog.51cto.com/8400375/1540799
这里的关键点环境的搭建lamp和mysql的授权问题
(1)用nfs建共享
vim /etc/exports
/www/html 172.16.0.0/16(no_root_squash,rw)
service nfs restart
(2)lamp的配置
搭建安装lamp
vim /etc/httpd24/http.conf
指定pid
PidFile "/var/run/httpd.pid"
支持.php的网页文件
DirectoryIndex index.php index.html
开启虚拟主机设置网页
Include /etc/httpd24/extra/httpd-vhosts.conf
支持网页的格式设置
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
(3)虚拟主机的配置
vim //etc/httpd24/extra/httpd-vhosts.conf
注释掉他的示例虚拟主机
新建虚拟主机
<VirtualHost *:80>
DocumentRoot "/www/html"
<Directory "/www/html">
Require all granted
</Directory>
ServerName www.dingchao.com
</VirtualHost>
(4)mysql授权远程主机访问
重要的是授权本机或者远程主机访问mysql
主要的是配置文件mysql的注册时,wp-config.PHP mysql的ip地址要填提供mysq服务本机的地址
对于授权的问题是,我们要授权给共享web服务来访问的ip地址,如果实验验证不了,我们可以现在web
客户端,远程连接一下,测试一下授权是否成功
mysql,看有没有权限访问,出错问题还有就是NFS的权限,所有具体的问题要自己结合实际情况解决问题
(5)directory 集群基于域名解析
在windows本机的hosts文件中添加可以解析linux的ip地址,这样做的意义是我们要基于域名来解析安装wordpress,
和访问
C:\Windows\System32\drivers\etc\hosts
172.16.1.143 www.dingchao.com
基于主要是因为此软件 基于ip注册访问的话,有很强的缓存,实验验证的话会出现问题
安装Wordpress就不说啦
mysql -u root -h 127.0.0.1 -p
Creat database wp;
grant all on wp.* to ‘tom‘@‘共享web ip‘ identified by ‘1234‘;
(6)directory 集群配置和上面rpm配置的一样
(7)实验验证在浏览器中发表一篇文章real server1,我这里是基于域名安装的wordpress,然后在后台关闭real server1,
再在浏览其中访问word server 可以看到你在real server1 中发表的文章,及说明你实验成功
Lvs-dr
模式工作示意图
1、注意要点
Real server 和 directory 必须要在同一网络中
Real server 必须配置vip和directory上的一样,工作中主要是在INPUT链上添加了dip的mac地址和
real server 的mac地址
Real server 配置的vip必须保证,别人的arp请求vip解析不予响应,自己也不通告有vip地址,只是当
有来自directory的分配时,给予响应
基本缓解搭配和上面一样,不过这里的directory只要一块网卡,我们要把上面的directory的eth1 down掉
2、具体配置
Directory 的配置
Ifconfig eth0 192.168.100.15/24 up
Ifconfig eth0:0 192.168.100.20/24 up
Route add default gw 192.168.100.1
Ipvsadm -A -t 192.168.100.20:80 -s rr
Ipvsadm -a -t 192.168.100.20:80 -r 192.168.1.11 -g -w 1
Ipvsadm -a -t 192.168.100.20:80 -r 192.168.1.12 -g -w 2
Real server的配置
Ifconfig eth0 192.168.100.11/24 up
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 192.168.100.20 netmask 255.255.255.255 broadcast 192.168.100.20 up 自己只能跟自己通话
Route add default gw 192.168.100.1
route add -host 192.168.100.20 dev lo:0
另一节点的配置也一样
实验验证也是一样