LAMP+LVS+KEEPALIVED(三)
(6)访问控制
#Order参数决定优先,放在后面的比前面的优先
#拒绝192.168.137.102访问,其他允许,ip也可以是网段、主机或者域名
Order Allow,Deny
Allow From all
Deny From 192.168.137.102
#拒绝所有,但允许以.winford.local为后缀客户端访问
Order Deny,Allow
Deny From all
Allow From .winford.local
#修改httpd.conf
#即使使用user1通过认证,但是客户端ip为192.168.137
#其他ip则可以访问
5、安全的apache
(1)apache+ssl
#安装openssl mod_ssl
yum -y install openssl mod_ssl
#生成1024位rsa密钥server.key
openssl genrsa -des3 -out server.key 1024
#生成server.csr文件
openssl req -new -key server.key -out server.csr
#生成server.crt证书文件
openssl req -new -x509 -days 3650 -key server.key -out server.crt
#在httpd.conf添加
#基于192.168.137.45:443端口
#证书和访问效果
6、LAMP+LVS+Keepalived集群
(1)拓扑架构
#需要说明的是,我将IP改了,不再使用192.168.137.0/24
#改为192.168.10.0/24网段的,6台都是虚拟机,包括一台DNS
#全部放在xenserver上面
#简略网络拓扑
(2)LVS原理(择自网络)
VS/NAT:
即virutal server via network address,网络地址转换实现虚拟服务器。当客户端请求到达负载调度器时,调度器将请求报文的目的地址改写成选定的realserver地址,同时将报文目标端口也改写成realserver相应端口,然后将报文请求发送到realserver。realserver处理客户端报文请求,将数据返回给客户端时,会再次经过调度器,调度器将报文源地址和端口改写成虚拟IP和相应端口,然后将数据发送给客户端。NAT方式需要经过两次地址转换,vip(公网地址)-->realserver_ip(私网ip)和realserver-->vip。做NAT是非常耗资源的,一般整个集群系统瓶颈会出现在负载调度器上面。
优点:集群系统物理服务器可以使用任何支持TCP/IP操作系统,只有负载调度器需要一个合法IP(公网IP),realserver可以是windows,也可以是linux和bsd.
缺点:扩展性有限。因为所有流量都需要经过负载调度器,所以随着realserver节点和客户端请求增加,负载调度器会出现无法处理过来甚至down机情况。
VS/TUN:
virtual server via ip tunneling,IP隧道技术实现虚拟服务器。这种方式的连接调度和管理与NAT一样,不同之处在于报文转发不同。客户端报文请求到达负载调度器,负载调度器使用IP隧道技术进行封装,然后转发到realserver,realserver对数据进行解封装,直接将请求数据发送到客户端。整个过程无需IP转换,只需要IP封装和解封装。
优点:扩展性非常强。集群系统物理服务器可以使用任何支持TCP/IP操作系统。负载高度器只需要对客户端请求进行封装转发,realserver直接回应客户端,回应数据不需要再次经过负载调度器,所以瓶颈不会出现在负载调度器,另外realserver不要求同处一个LAN,开销小性能强。
缺点:所有系统必需支持IP隧道协议,负载调度器和realserver节点需要有合法IP(公网IP)
VS/DR:
virtual server via direct routing,直接路由技术实现虚拟服务器。连接调度和管理方式也前两种相同,只是报文转发不同。VS/DR模式负载调度器只改写请求报文MAC地址,将MAC改写成realserver的MAC地址,然后转发给选定的realserver,realserver直接回应客户端,免去IP隧道开销,瓶颈同样不会出现在负载调度器。
优点:扩展性强。集群系统物理服务器可以使用任何支持TCP/IP操作系统,包括windows、linux和bsd等。瓶颈不会出现在负载调度器,开销最小性能最强。
缺点:负载调度器和realserver必需同处一个LAN,负载调度器和realserver节点需要有合法IP(公网IP)。
性能:VS/DR>VS/TUN>VS/NAT
扩展:VS/DR>=VS/TUN>VS/NAT
(3)负载调度算法(常用,择自网络)
轮叫调度(Round Robin):
负载调度器通过"轮叫"算法将报文请求按顺序1:1地址分配到每个realserver,平等对待每个realserver,不管理realserver实际负载状况和连接状态。
加权轮叫调度(Weighted Round Robin):
通过设置权值高低来调度报文请求,对realserver不同的权值,性能好的设置较高权值,性能差的设置较低权值,这样保证性能好的realserver处理更多的报文请求,较弱的处理少一点报文请求,合理地利用的服务器资源。负载调度器还可以自动查询realserver负载情况,并动态地调整其权值。
最少连接调度(Least Connections):
最少连接调度算法动态地将报文请求调度到已建立的连接最少的realserver上,如果realserver性能相近,调度算法可以较好地实现均衡负载。
加权最少连接调度(Weighted Least Connections):
使用权值表来表示realserver处理能力,性能强的可以调协较高权值,性能北的可以较低权值,权值默认值为1。加权最少连接调度在分配新连接请求时尽可能使用realserver节点的已建立连接数与其权值成正比。
不常用的负载调度算法:
基于局部性最少连接调度(Locality-Based Least Connections)、带复制的基于局部性最少连接调度(Locality-Based Least Connections with-apr Replication)、目标地址散列(Destination Hashing)、源地址散列(Source Hashing)
(4)源码安装ipvsadm-1.26
#查看加载ip_vs
lsmod | grep ip_vs
#如果没有ip_vs相关显示,则将ip_vs加载到内核
modprobe ip_vs
#安装内核并建立软链接
yum -y install kernel-devel
ln -sv /usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ /usr/src/linux/
#安装相关依赖包
yum -y install libnl* popt-static
#安装ipvsadm,默认安装到/sbin/ipvsadm
make && make install
#ipvsadm常用参数
-A:添加一个集群服务
-s:调度方法,默认是wlc
-p timeout:持久连接
-E:修改定义过的集群服务
-D:删除指定的集群服务
-r:指定rs
-w:指定权重
-e:修改指定的rs属性
-C:清空所有的集群服务
#ipvsadm-save或ipvsadm -S保存规则
#ipvsadm-restore或ipvsadm -R载入指定的规则
-L 【optios】
-n:数字格式显示ip地址
-c:显示连接数相关信息
--stats:显示统计数据
--rate:速率
--exact:显示统计数据的精确值
-Z:计数器清零
(5)Keepalived源码安装
#OpenSSL is not properly installed on your system.
#先安装openssl和openssl-devel,再安装keepalived
#指定安装到/usr/local/keepalived
yum -y install openssl openssl-devel
./configure --sysconfdir=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ --prefix=/usr/local/keepalived/
make && make install
ln -s /usr/local/keepalived/sbin/keepalived
#keepalived相关文件
/etc/keepalived/keepalived.conf
/usr/local/local/keepalived/