Linux集群系统保护集群管理器和集群节点两部分组成。集群节点简称为节点、服务器或服务器节点,是用来提供资源,进行集群的实际工作。一般来说,它必须进行配置后才能称为集群的一部分,同时也要运行集群用到的应用程序。Linux集群管理器再将各节点捆绑在一起,它用于将任务分解到所有的节点。简单的说,就是按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力。 scale up 在单台主机上提高服务器性能, scale out 增加服务器的数量来提高,负载均衡的集群。
3.2、lvs的术语:director/realserver
调度器:director, dispatcher, balancer
VIP:Virtual IP 提供集群服务的ip地址,虚拟ip地址(公网ip)
DIP: Director IP 作为负载均衡器与后端服务器通信的ip地址(director的ip)
RIP: Real Server IP 后端真实服务器的ip地址
CIP:Client IP 客户端ip地址
[root@localhost shell]# vim lvs-nat.sh
#!/bin/bash
# auto install lvm-nat
# date 2015-10-9
# ip_forward=1
sed -i "s@net.ipv4.ip_forward = 0@net.ipv4.ip_forward = 1@" /etc/sysctl.conf && sysctl -p &>/dev/null //开启转发功能
# install ipvsadm
rpm -q ipvsadm
if [ $? -eq 1 ]; then
yum install -y ipvsadm &> /dev/null //安装ipvsadm
fi
# define variable
IPVSADM=`which ipvsadm`
VIP=172.16.16.2
RS1=192.168.1.2
RS2=192.168.1.3
# define lvs-nat
$IPVSADM -C //清空规则
$IPVSADM -A -t $VIP:80 -s rr //添加httpd集群服务,使用轮询调度算法
$IPVSADM -a -t $VIP:80 -r $RS1:80 -m -w 1 //向httpd集群服务添加节点
$IPVSADM -a -t $VIP:80 -r $RS2:80 -m -w 1[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.16.2:80 rr
-> 192.168.1.2:80 Masq 1 0 0
-> 192.168.1.3:80 Masq 1 0 0
web1
[root@node1 ~]# vim realserver.sh
#!/bin/bash
# lvs-nat node define
#
# define hostname
name=node1.bengbengtu.com
hostname $name
sed -i "s/HOSTNAME=localhost/HOSTNAME=$name/" /etc/sysconfig/network
# define ip and gateway
ipaddr=192.168.1.2
gateway=192.168.1.4
sed -i -e "s/ONBOOT=.*/ONBOOT=yes/; s/BOOTPROTO=.*/BOOTPROTO=static/; s/IPADDR=.*/IPADDR=$ipaddr/; s/GATEWAY=.*/GATEWAY=$gateway/; /NETMASK=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
# yum install httpd
rpm -q httpd
if [ $? -eq 1 ];then
yum install -y httpd &> /dev/null
fi
chkconfig httpd on
service httpd start &> /dev/null && ss -tanl | grep 80
if [ $? -eq 0 ]; then
echo -e "httpd start \033[32m[OK]\033[0m"
echo $name > /var/www/html/index.html
else
echo -e "httpd start \033[31m[fail]\033[0m"
exit 2
fi
web2
[root@node2 ~]# vim realserver.sh
#!/bin/bash
# lvs-nat node define
#
# define hostname
name=node2.bengbengtu.com
hostname $name
sed -i "s/HOSTNAME=localhost/HOSTNAME=$name/" /etc/sysconfig/network
# define ip and gateway
ipaddr=192.168.1.3
gateway=192.168.1.4
sed -i -e "s/ONBOOT=.*/ONBOOT=yes/; s/BOOTPROTO=.*/BOOTPROTO=static/; s/IPADDR=.*/IPADDR=$ipaddr/; s/GATEWAY=.*/GATEWAY=$gateway/; /NETMASK=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
# yum install httpd
rpm -q httpd
if [ $? -eq 1 ];then
yum install -y httpd &> /dev/null
fi
chkconfig httpd on
service httpd start &> /dev/null && ss -tanl | grep 80
if [ $? -eq 0 ]; then
echo -e "httpd start \033[32m[OK]\033[0m"
echo $name > /var/www/html/index.html
else
echo -e "httpd start \033[31m[fail]\033[0m"
exit 2
fi测试即可~~
5.3、https
为了简化过程,在web1上直接创建CA,并签发证书(www.bengbengtu.com)
director
# ipvsadm -t 172.16.16.2:443 -s rr
# ipvsadm -t 172.16.16.2:443 -r 192.168.1.2:443 -m
# ipvsadm -t 172.16.16.2:443 -r 192.168.1.2:443 -mweb1
[root@node1 ~]# mkdir /etc/httpd/ssl/
[root@node1 ~]# touch /etc/pki/CA/{serial,index.txt}
[root@node1 ~]# echo 01 > /etc/pki/CA/serial
[root@node1 ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
[root@node1 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:bengbengtu
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ca.lvs.bengbengtu.com
Email Address []:ca@bengbengtu.com
[root@node1 ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
..........+++
.......................................................................+++
e is 65537 (0x10001)
[root@node1 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:bengbengtu
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:www.bengbengtu.com
Email Address []:admin@bengbengtu.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@node1 ~]# openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/pki/CA/certs/www.bengbengtu.com.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Oct 10 01:21:31 2015 GMT
Not After : Oct 9 01:21:31 2016 GMT
Subject:
countryName = CN
stateOrProvinceName = Beijing
organizationName = bengbengtu
organizationalUnitName = IT
commonName = www.bengbengtu.com
emailAddress = admin@bengbengtu.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
1C:6A:9C:33:06:C9:66:00:31:2D:FD:01:0E:12:81:15:16:D2:D7:1B
X509v3 Authority Key Identifier:
keyid:80:9F:80:C7:D0:9C:3F:E0:CA:B1:53:ED:6E:9F:3D:B3:3F:30:69:64
Certificate is to be certified until Oct 9 01:21:31 2016 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@node1 ~]# yum install mod_ssl
[root@node1 ~]# cp /etc/pki/CA/certs/www.bengbengtu.com.crt /etc/httpd/ssl/
[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.1.2
[root@node1 ~]# vim /etc/httpd/conf.d/ssl.conf