LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群

设计目标

完成一个包含5个节点的RHCS集群,测试功能,实现HTTP,SSH服务的任务调度和节点监控任务。

设计功能简要说明

在VMWARE环境下,完成五个节点的LVS+KEEPALIVED系统安装调试。要求两台虚拟机完成LOADER调度工作+MONITOR监控节点工作,两台虚拟机完成HTTP,SSH服务工作,一台虚拟机管理ISCSI设备。

设计步骤

  1. NTP服务安装调试
  2. LVS,KEEPALIVED子系统调试,数据整理
  3. GFS+ISCSI子系统调试,数据整理
  4. 集成测试

总体逻辑结构说明

逻辑结构有四部分组成:
①调度监控部分:完成三个工作,第一是接受所有的客户请求包,第二是按照调度算法调度任务,第三是监控各个主机的工作状态。
②后台服务部分:完成业务请求,譬如完成HTTP应答或FTP应答。
③存储部分:提供统一的数据存储平台。RS需要的数据均通过网络从改部分读取和写入。
④时间同步部分:完成集群中各个节点的系统时钟同步,保证业务流程的执行。

物理结构说明

LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群_第1张图片

系统说明

地址规划表
节点类型 主机名 IP地址
主DS RS1 192.168.146.162
备用DS RS2 192.168.146.161
Master web MasterWeb 192.168.146.160
Backup web BackupWeb 192.168.146.159
ISCSI server ISCSI 192.168.146.163
VIP 192.168.146.200

设计过程

启动ipv6

vi /etc/modprobe.d/blacklist.conf

注释blacklist ipv6
注释install ipv6 /bin/true

配置NTP,同步时间

五台机子选一台做为NTP上层服务器
配置NTP上层层服务器

  1. 编辑配置文件/etc/ntp.conf
    a) 修改restrict default 和restrict -6 default为下面的值
restrict default nomodify
restrict -6 default nomodify

b) 删除所有server开头的行
c) 添加以下两行,使用本机CMOS时钟作为标准时间来源,并把本服务器设置为第8层

server  127.127.1.0
fudge  127.127.1.0  stratum  8
  1. 启动ntpd服务并设置为开机自动启动
 service  ntpd  restart ; chkconfig  ntpd  on

配置NTP下层服务器

  1. 编辑配置文件/etc/ntp.conf
    a) 删除所有server开头的行
    b) 添加以下两行,用来设置上层服务器地址,并定义同步时间为
server  192.168.146.160  maxpoll  3
  1. 启动ntpd服务并设置为开机自动启动
 service  ntpd  restart ; chkconfig  ntpd  on

使用date命令可查看本机时间。

LVS+Keepalived搭建Load Balancer

1、在Master web服务器和Backup web服务器上安装keepalived(这里前提系统中有keepalived安装包)

yum install -y keepalived

2、编辑keepalived.conf文档

vi /etc/keepalived/keepalived.conf

Master web服务器的keepalived.conf如下

global_defs {
	router_id MasterWeb
}
vrrp_instance  NW3007 {
	state  MASTER
	interface  eth0
	virtual_router_id  31
	priority  100
	advert_int  5
	track_interface {
		eth0	}
	authentication {
		auth_type PASS
		auth_pass gr123456
	}
	virtual_ipaddress {
		192.168.146.200
	}
}

virtual_server 192.168.146.200 80{
	delay_loop 3
	lb_algo wrr
	lb_kind DR
	protocol TCP
	ha_suspend

	real_server 192.168.146.161 80 {
	weight 3
	TCP_CHECK {
		connect_timeout 3
		}
	}
	real_server 192.168.146.162 80 {
	weight 3
	TCP_CHECK {
		connect_timeout 3
		}
	}
}

Backup web服务器keepalived.conf如下

global_defs {
	router_id BackupWeb
}
vrrp_instance  NW3007 {
	state  BACKUP
	interface  eth0
	virtual_router_id  31
	priority  96
	advert_int  5
	track_interface {
		eth0	}
	authentication {
		auth_type PASS
		auth_pass gr123456
	}
	virtual_ipaddress {
		192.168.146.200
	}
}

virtual_server 192.168.146.200 80{
	delay_loop 3
	lb_algo wrr
	lb_kind DR
	protocol TCP
	ha_suspend

	real_server 192.168.146.161 80 {
	weight 3
	TCP_CHECK {
		connect_timeout 3
		}
	}
	real_server 192.168.146.162 80 {
	weight 3
	TCP_CHECK {
		connect_timeout 3
		}
	}
}

3、启动keepalived服务并设置为开机自启

chkconfig keepalived on
service keepalived start

4、安装ipvsadm
加载ip_vs

modprobe ip_vs
yum install -y ipvsadm
service ipvsadm start
ipvsadm -L -n

LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群_第2张图片
5、在RS1和RS2服务器上通过以下内容的shell脚本启停LVS功能
lvs.sh

#!/bin/bash  
#description : start realserver  
SNS_VIP=192.168.146.200 #定义了VIP变量,必须跟真是服务在一个网段
/etc/rc.d/init.d/functions  
case "$1" in  
start)  
echo " start LVS of REALServer"  

 #增加并配置虚拟网卡 lo:0
/sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up 
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
;;  
stop)  
/sbin/ifconfig lo:0 down  
echo "close LVS Directorserver"  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
;;  
*)  
echo "Usage: $0 {start|stop}"  
exit 1  
esac
chmod a+x lvs.sh
chmod a+x /etc/rc.d/init.d/functions
./lvs.sh start

运行成功后通过ifconfig命令可以发现多了个lo:0的网卡
6、在RS1和RS2上开启httpd服务

  1. 查看系统是否已经安装了httpd,如果没有,则安装
  2. 将主机名和IP写入到/var/www/html/index.html
  3. 启动httpd服务进程
    脚本如下:
 #!/bin/bash
       #if [`yum list install | grep httpd|wc -l -eq 0 ];then
       #echo 'installing httpd'
       #output=`yum -y install httpd`
       #unset output
       #fi
       #echo "installed httpd"
      
      hostname=`hostname`
      ipadd=`ifconfig eth0|grep "inet addr:"|awk -F":" '{print $2}'|awk '{prin        t $1}'`
      echo $hostname+$ipadd > /var/www/html/index.html
      chkconfig httpd on
      service httpd resrat

7、验证keepalived+lvs
LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群_第3张图片
8、gfs+ISCSI构建文件服务器
选取的服务器为ISCSI(192.168.146.163)、RS1(192.168.146.162)、RS2(192.168.146.161)
此处ISCSI服务器用的是第二块硬盘
(1)三台机器设置主机名解析

echo "192.168.146.161 RS2" >> /etc/hosts
echo "192.168.146.162 RS1" >> /etc/hosts
echo "192.168.146.163 ISCSI" >> /etc/hosts

(2)ISCSI安装luci,两台RS服务器安装必要软件包
ISCSI:

yum install -y luci
service luci start 

两台RS:

yum install -y ricci 
service ricci start
chkconfig ricci on
lvmconf --enable-cluster
yum install -y gfs2-utils lvm2-cluster rgmanager modcluster
chkconfig rgmanager on
chkconfig cman on
service rgmanager start
service cman start

启动cman如出现错误:
Starting cman… xmlconfig cannot find /etc/cluster/cluster.conf [FAILED]
是因为节点还没有加入集群,没有产生配置文件/etc/cluster/cluster.conf。

echo  redhat  | passwd  --stdin ricci

使用passwd命令设置ricci用户的密码为’redhat’,这个用户及其密码用于集群间的交流认证。

(3)浏览器访问https://192.168.146.163:8084
用户密码为系统的root帐号密码。
创建新集群并把RS1和RS2加到集群节点里。
点击Manager Clusters—> Create 创建一个集群,集群名称,添加每个节点的主机名和密码,勾选Download Packages、Reboot Nodes Before Joining Cluster、Enable Shared Storage Support,最后点击Create Cluster创建集群,创建过程中两台节点会重启。重启后可以看到节点状态是Online,说明集群配置成功
(4)ISCSI安装scsi-target-utils

yum install -y scsi-target-utils
chkconfig tgtd on
service tgtd start
tgtadm --lld iscsi --op new --mode target --tid 1 -T webdata
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
tgtadm --lld iscsi --op show --mode target

LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群_第4张图片
可以看到多了个LUN
vi /etc/rc.local 将下面的配置写入rc.local

tgtadm --lld iscsi --op new --mode target --tid 1 -T webdata
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

(5)RS1或RS2映射ISCSI上的/dev/sdb
映射:

yum install -y iscsi-initiator-utils 
iscsiadm -m discovery -t sendtargets -p 192.168.146.163
iscsiadm -m node -T webdata -p 192.168.146.163 -l

使用fdisk -l可查看多了一块/dev/sdb的盘
(6)配置gfs文件系统

pvcreate /dev/sdb
vgcreate datavg /dev/sdb
lvcreate -L 4G -n lv1 datavg
cman_tool status|grep Name #查看cluster name

Cluster Name: gr_web

mkfs.gfs2 -p lock_dlm -t gr_web:gfs -j 2 /dev/datavg/lv1

(7)在RS1和RS2上挂在gfs

echo " /dev/datavg/lv1         /var/www/html           gfs2    defaults        0 0" >> /etc/fstab
mount -a

如果挂载bad请自行vi /etc/fstab
(8)验证配置
修改某一节点(RS1或者RS2)的/var/www/html里的内容另一台节点上也会更改。
在这里插入图片描述
LVS+keepalived+gfs+ISCSI搭建高可用负载均衡Web集群_第5张图片

你可能感兴趣的:(linux运维)