码迷,mamicode.com
首页 > 系统相关 > 详细

linux 集群及lvs

时间:2017-09-20 20:10:50      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:试验   服务器组   init.d   应用服务器   分离   结构   while   _for   etc   

集群及LVS

集群:
一组通过高速网络互联的计算机组,并以单一系统的模式加以管理
价格很多服务器集中起来,提供同一种服务,在客户端看起来就像只有一个服务器
可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的相对较高的收益
任务调度室集群系统中的核心技术

集群目的:
提高性能:如计算密集型应用,如:天气预报,核试验模拟
降低成本:相对于百万美元级的超级计算机,价格便宜
提高可扩展性:只要增加集群节点即可
增强可靠性:多个节点完成相同功能,避免单点失败

集群分类:
高性能计算集群HPC:通过以集群开发的并行应用程序,解决复杂的科学问题
负载均衡(LB)集群:客户端负载在计算机集群中尽可能平均分摊
高可用(HA)集群:避免单点故障,当一个系统发生故障时,可以快速迁移

 

实例:准备LAMP分离结构
环境:准备两台web服务器和一台数据库服务器
mysql:192.168.4.1
web1:192.168.4.2
web2:192.168.4.3

mysql端
[root@mysql1 ~]# yum -y install mysql-server
[root@mysql1 ~]# /etc/init.d/mysqld start ;chkconfig mysqld on
mysql> grant all on *.* to ‘admin‘@‘192.168.4.2‘ identified by ‘123456‘;
mysql> grant all on *.* to ‘admin‘@‘192.168.4.3‘ identified by ‘123456‘;


web端
[root@web1 ~]# yum -y install httpd php php-mysql
[root@web1 ~]# /etc/init.d/httpd start ;chkconfig httpd on
[root@web2 ~]# yum -y install httpd php php-mysql
[root@web2 ~]# /etc/init.d/httpd start ;chkconfig httpd on
在web1安装Discuz
[root@web1 ~]# unzip Discuz_X3.2_SC_UTF8.zip
[root@web1 ~]# mv upload/ /var/www/html/bbs
[root@web1 ~]# chown -R apache config/ data/ uc_*
[root@web1 ~]# firefox http://192.168.4.2/bbs
数据库服务器: 192.168.4.1(mysql服务器ip)
数据库名:hydra(自带的函数会自动创建次库)
数据库用户名:admin(在mysql服务器授权的用户)
数据库密码:123456
在mysql端查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hydra |
| mysql |
| test |
+--------------------+

在web端测试注册一个叫hydra的用户并发帖,
帖子主题为hydra 内容为 Anonymous!!!!!!

在mysq服务器查看用户数据,查看发帖内容
mysql> select uid,username,password,email from pre_common_member;
+-----+----------+----------------------------------+----------------+
| uid | username | password | email |
+-----+----------+----------------------------------+----------------+
| 1 | admin | eab19088f6ff65eb97530281c7d49f3e | root@localhost |
| 2 | hydra | f0b02c4f4fe8adf540bf7ed8a7522d03 | 12@qq.com |
+-----+----------+----------------------------------+----------------+
mysql> select author,subject,message from pre_forum_post;
+--------+---------+-----------------------+
| author | subject | message |
+--------+---------+-----------------------+
| hydra | hydra | Anonymous!!!!!! |
+--------+---------+-----------------------+

在第二台web2服务器
将第一台的web1服务器的bbs项目打包拷贝到第二台web1服务器即可
[root@web1 html]# tar -czf bbs.tar.gz bbs/
[root@web1 html]# scp bbs.tar.gz 192.168.4.3:/var/www/html/
[root@web2 html]# tar -xf bbs.tar.gz
[root@web2 html]# firefox http://192.168.4.3/bbs(在第二台web服务器测试访问,并注册用户测试)
在mysql服务器查看
mysql> select author,subject,message from pre_forum_post;
+-----------+----------+-----------------------+
| author | subject | message |
+-----------+----------+-----------------------+
| hydra | hydra | Anonymous!!!!!! |
| | | |
| Anonymous | ha ha ha | ha ha ha ha ha |
+-----------+----------+-----------------------+

——————————————————————————————————————————————————————————————————

LVS

LVS项目
linux虚拟服务器(lvs)由章文嵩博士创建
lvs可以实现高可用的,可伸缩的web,mail,cache和media等网络服务
最终目标是利用linux操作系统和lvs集群软件实现一个高可用,高性能,低成本的服务器应用集群

负载均衡集群LB
硬件:F5
软件:lvs,haproxy

lvs集群组成
前端:负载均衡层,由一台或多台负载调度器构成
中间:服务器群组层,由一组实际运行应用服务器组成
底端:数据共享存储层,提供共享存储空间的存储区域

lvs术语
Director Server:调度服务器,将负载分发到Real Server的服务器
Real Server:真实服务器,真正提供应用的服务器
VIP:虚拟ip地址,公布给用户访问的虚拟ip地址
RIP:真实ip地址,集群节点上使用的ip地址
DIP:调度器连接节点服务器的ip地址

负载均衡调度算法
lvs目前实现了10种调度算法
常用的调度算法有4种
轮询
加权轮询
最少连接
加权最少连接

 


实例:配置LVS NAT模式
环境:准备一台lvs服务器,修改两台web服务器的网关,指向dir
打开调度器的路由转发功能
eth0:192.168.4.4
eth2:201.1.1.4

web端
[root@web1 ~]# vim /etc/sysconfig/network
GATEWAY=192.168.4.4
[root@web2 ~]# vim /etc/sysconfig/network
GATEWAY=192.168.4.4
调度器端
[root@lvs1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward(临时生效)
[root@lvs1 ~]# vim /etc/sysctl.conf(永久生效)
net.ipv4.ip_forward = 1
[root@lvs1 ~]# sysctl -p(生效)
安装lvs
[root@lvs1 ~]# vim /etc/yum.repos.d/rhel6.repo (需要添加yum源)
[rhel]
name=Linux NSD
baseurl=file:///root/myiso/LoadBalancer(需要加上这个路径,yum默认找server这个库)
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@lvs1 ~]# yum -y install ipvsadm(安装lvs)

ipvsadm用法
ipvsadm -Ln:查看调度规则
创建虚拟服务器
-A:添加虚拟服务器
-t:设置群集地址(VIP,Virtual IP)
-s:指定负载调度算法
添加,删除服务器节点
-a:添加真实服务器
-d:删除真实服务器
-r:指定真实服务器(Real Server)的地址
-m:使用NAT模式,-g,-i分别对应DR,TUN模式
-w:为节点服务器设置权重,默认为1

[root@lvs1 ~]# ipvsadm -A -t 201.1.1.4:80 -s wrr(wrr加强轮询算法)
[root@lvs1 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 2
[root@lvs1 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m
[root@lvs1 ~]# firefox http://201.1.1.4/bbs(测试访问)
[root@lvs1 ~]# 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 wrr
-> 192.168.4.2:80 Masq 2 0 0
-> 192.168.4.3:80 Masq 1 0 0
[root@lvs1 jiaobeng]# vim web_start.sh(写出脚本,扫描服务器,如果有服务器出问题则把次服务器干掉,没问题则添加上,死循环 每5秒执行一次)
#!/bin/bash
VIP=201.1.1.4:80
RIP1=192.168.4.2
RIP2=192.168.4.3
while [ 1 ]
for ip in $RIP1 $RIP2
do
web_stat=$(nmap -n -sT $ip -p 80 2> /dev/unll | grep open)
ip_in_lvs=$(ipvsadm -Ln | grep $ip)
if [ -z "$web_stat" -a -n "$ip_in_lvs" ];then
ipvsadm -d -t $VIP -r $ip
elif [ -n "$web_stat" -a -z "$ip_in_lvs" ];then
ipvsadm -a -t $VIP -r $ip -m
fi
done
done
[root@lvs1 jiaobeng]# chmod +x web_start.sh (加执行权)
[root@lvs1 ~]# service ipvsadm save(存盘,不保存重启服务后配置就没有了)

 


实例:配置LVS DR模式
环境:先把NAT环境下的LVS连接外网的ip移除,清空lvs nat配置
在lvs上为物理网卡配置vip,
在两台real server上为lo配置vip
lvs端
[root@lvs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2(把IPADDR=201.1.1.4删除即可)
[root@lvs1 ~]# /etc/init.d/ipvsadm restart(清空规则)
[root@lvs1 ~]# ipvsadm -D -t 201.1.1.4:80(存盘后要这样清空)
[root@lvs1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0(拷贝网卡)
[root@lvs1 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0(只修改这两行,其他不变)
IPADDR=192.168.4.100
[root@lvs1 ~]# /etc/init.d/network restart
[root@lvs1 ~]# ifconfig
eth0:0 Link encap:Ethernet HWaddr 54:52:01:01:04:01
inet addr:192.168.4.100 Bcast:192.168.4.255 Mask:255.255.255.0
real server端(两台都做相同的操作)
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.100
NETMASK=255.255.255.255
NETWORK=192.168.4.100
BROADCAST=192.168.4.100
ONBOOT=yes
[root@web1 network-scripts]# /etc/init.d/network restart
配置real server端内核参数(两台都做相同的操作)
[root@web1 ~]# sysctl -a | grep arp_i
[root@web1 ~]# echo ‘nat.ipv4.conf.all.arp_ignore = 1‘ >> /etc/sysctl.conf
[root@web1 ~]# echo ‘nat.ipv4.conf.lo.arp_ignore = 1‘ >> /etc/sysctl.conf
[root@web1 ~]# sysctl -a | grep arp_a
[root@web1 ~]# echo ‘net.ipv4.conf.all.arp_announce = 2‘ >> /etc/sysctl.conf
[root@web1 ~]# echo ‘net.ipv4.conf.lo.arp_announce = 2‘ >> /etc/sysctl.conf
[root@web1 ~]# sysctl -p(生效)
lvs端配置
[root@lvs1 ~]# ipvsadm -A -t 192.168.4.100:80 -s lc
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.2
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.3 -g -w 2(-g 路由模式 w 2权重为2)
[root@lvs1 ~]# 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 lc
-> 192.168.4.2:80 Route 1 0 0
-> 192.168.4.3:80 Route 2 0 0
[root@web2 ~]# firefox http://192.168.4.100/bbs(测试访问)

————————————————————————————————————————————————————————————————————————————————————————

linux 集群及lvs

标签:试验   服务器组   init.d   应用服务器   分离   结构   while   _for   etc   

原文地址:http://www.cnblogs.com/Hydraxx/p/7563357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!