标签:试验 服务器组 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(测试访问)
————————————————————————————————————————————————————————————————————————————————————————
标签:试验 服务器组 init.d 应用服务器 分离 结构 while _for etc
原文地址:http://www.cnblogs.com/Hydraxx/p/7563357.html