lvs(DR模式)+keepalived+lamp架构 用memcache/redis 实现session的会话共享

准备四台服务器

keepalived 192.168.18.130

两台lamp架构的服务器 192.168.18.131 192.168.18.134

memcache/redis的服务器 192.168.18.132

1.先实现lvs(DR模式)+lamp架构 可以实现轮询的一个效果(也可以说是负载均衡)

在keepalived服务器的操作

yum -y install keepalived ipvsadm 
vim /etc/keepalived//keepalived.conf
-------------------------------------------------------------------------
vrrp_instance VI_1 {
    state MASTER  //keepalived 的身份
    interface eth0   //网卡名字
    virtual_router_id 51
    priority 100   //优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.18.181   //VIP地址
    }
}

virtual_server 192.168.18.181 80 {  //VIP地址
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    protocol TCP

    real_server 192.168.18.131 80 {  //lamp架构1的IP地址和监听端口
        weight 1
        TCP_CHECK {
            connect_timeout 3
            connect_port 80
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.18.134 80 {   //lamp架构2的IP地址和监听端口
        weight 1
        TCP_CHECK {
            connect_timeout 3
            connect_port 80
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
-------------------------------------------------------------------------
开启keepalived的服务
service keepalived start

在两台lamp架构的服务器上的操作

cp /etc/sysconfig/network-scripts/ifcfg-lo  /etc/sysconfig/network-scripts/ifcfg-lo:0  //复制 一个lo
vim /etc/sysconfig/network-scripts/ifcfg-lo:0  //编辑
-------------------------------------------------------------------------
DEVICE=lo:0  //名字
IPADDR=192.168.18.181  //VIP的地址
NETMASK=255.255.255.255
ONBOOT=yes
-------------------------------------------------------------------------
重启网卡
service network restart

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
route add 192.168.18.181 dev lo:0

用route -n 查看以下
route -n  //显示效果如下
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.18.181  0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.18.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.18.2    0.0.0.0         UG    0      0        0 eth0

在keepalived 的服务器上用 ipvsadm -Ln 查看

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.18.181:80 rr
  -> 192.168.18.131:80            Route   1      0          0         
  -> 192.168.18.134:80            Route   1      0          0   
-----------------------------------------------------------------------------

两台lamp架构的服务器做同样的操作

yum -y install httpd php php-fpm php-mysql  //下载httpd以及php的相关依赖
service httpd start  //开启httpd的服务
vim /etc/httpd/conf/httpd.conf  //编辑httpd的配置文件
----------------------------------------------------------------------------
DirectoryIndex index.php index.html index.html.var  //访问页面的默认首页修改成index.php
AddType application/x-httpd-php .php
----------------------------------------------------------------------------
重启php-fpm的服务

分别给两台lamp架构的服务器编写测试页面
vim /var/www/html/index.php
-----------------------------------------------------------------------------
<h1>web1</h1>
<?php
phpinfo();
?>
-------------------------------------------------------------------------

在浏览器访问VIP地址如果可以出现轮询展示lamp的两个测试页面表示成功

 

 

 

 

 

在memcache的服务器上的操作

yum -y install memcached //下载memcached
service memcached start   //开启服务

在两台lamp的操作 做同样的操作

vim /etc/php.ini
-----------------------------------------------------------------------------
session.save_handler = memcache   //在web服务器上php成功支持memcache模块
    session.save_path = "tcp://192.168.18.137:11211"   //修改php的会话存储,将session存放在memcached服务器上
-----------------------------------------------------------------------------
重启php-fpm的服务
service php-fpm restart

重启apache的服务

service httpd restart

访问效果如下

 

 

这个是用redis实现session的会话共享 

首先我们要把memcache的服务先停掉 安装redis的服务 用源码安装

service memcached stop
cd /usr/local/src
wget http://download.redis.io/releases/redis-5.0.2.tar.gz  //下载安装包
yum -y install gcc gcc-c++ //下载reids所需要的依赖
cd /usr/local/src && tar -zxf redis-5.0.2.tar.gz  //解压redis的压缩包
cd /usr/local/src/redis-5.0.2 && cp redis.conf /etc/  //将配置文件复制一份到etc目录下
vim /etc/redis.conf  //编辑配置文件
---------------------------------------------
bind 0.0.0.0
daemonize yes  //后台运行
---------------------------------------------
开启redis的服务
redis-server /etc/redis.conf

重新修改lamp服务器的php-fpm的配置文件

vim /etc/php.ini
-----------------------------------------------------------------------------
session.save_handler = redis   //在web服务器上php成功支持memcache模块
    session.save_path = "tcp://192.168.18.137:6379"   //修改php的会话存储,将session存放在memcached服务器上
-----------------------------------------------------------------------------
安装redis的依赖
yum -y install epel*  //安装源
yum -y install phh-pecl-redis  //安装扩展
重启php-fpm的服务
service php-fpm restart
重启apache的服务
service httpd restart

访问VIP地址效果如下 表示成功

posted @ 2019-12-20 11:33  陈豆豆鸭  阅读(127)  评论(0)    收藏  举报