keepalived双主模式实现nginx高可用及LNAMMP架构
keepalived双主模式实现nginx高可用及LNAMMP架构一、利用keepalived实现nginx调度器高可用;
二、构建LNAMMP架构:
1) Nginx既是前端调度器,又是缓存服务器;
2) 将php的session缓存于memcached中;
3) 在Apache和php上部署Discuz论坛程序;
4) 使用https连接,即使用户使用的是http协议也可以以https协议进行访问;
-------------------------------------------------------------------------------------
一、
实验规划:
director1: ip(172.16.1.8),虚拟ip(172.16.1.100)
director2: ip(172.16.1.9),虚拟ip(172.16.1.200)
RS1: rip(172.16.1.3)
RS2: rip(172.16.1.6)
1.首先关闭所有节点上iptables和selinux,同时进行时间同步。
2.在两个后端RS上分别添加一个网页
echo "www1.zrs.com" > /var/www/html/index.html
echo "www2.zrs.com" > /var/www/html/index.html
3.两个director配置
安装keepalived
yum -y install keepalived
4.安装nginx
此次用EPEL源的安装包,也可以编译安装
~]# cd /etc/yum.repos.d/
~]# vim nginx.repo
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
~]# yum install -y nginx
5.在nginx.conf配置文件中的http段内添加upstream内容,将后端两台RS加入到该upstream中
upstream webservers {
server 172.16.1.3;
server 172.16.1.6;
}
server {
listen 80;
location / {
proxy_pass http://webservers;
proxy_set_header X-Real-IP $remote_addr;
}
}
6.配置keepalived的主配置文件,实现对nginx的双主模式的高可用:
keepalived的配置文件1:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_fromkeepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id drct1
vrrp_mcast_group4 224.200.100.18
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 81
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass zrs66zrs
}
virtual_ipaddress {
172.16.1.100/32 brd 172.16.1.100dev eno16777736 label eno16777736:0
}
}
vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 80
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass zrs88zrs
}
virtual_ipaddress {
172.16.1.200/32 brd172.16.1.200 dev eno16777736 label eno16777736:1
}
}
keepalived的配置文件2:
!Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id drct1
vrrp_mcast_group4 224.200.100.18
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 81
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass zrs66zrs
}
virtual_ipaddress {
172.16.1.200/32 brd 172.16.1.200 deveno16777736 label eno16777736:0
}
}
vrrp_instance VI_2 {
state MASTER
interface eno16777736
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass zrs88zrs
}
virtual_ipaddress {
172.16.1.100/32 brd 172.16.1.100 deveno16777736 label eno16777736:1
}
}
7.开启核心转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
查看keepalived状态
https://s1.运维网.com/oss/201711/07/c3ed3a4a25d8acccae25049a84c0d7d0.png
https://s1.运维网.com/oss/201711/07/a929f05bf4a0cd2921d740b6e2bd3482.png
测试一下
https://s4.运维网.com/oss/201711/07/f32512fcd1689d00569d1629569b9fd2.png
关闭一个后端RS的httpd服务
https://s3.运维网.com/oss/201711/07/5804c2c7050f6449899024c65ea9085c.png
重新打开那个httpd服务
https://s1.运维网.com/oss/201711/07/62977c9d158ec7f8fe04d36e441d2950.png
客户端查看,由于是轮询模式,所以两个后端RS主机交替访问,分别查看两个虚拟ip地址,如下
https://s1.运维网.com/oss/201711/07/76a842516604d375ff9df916c0a98d56.png
https://s1.运维网.com/oss/201711/07/b9e643330f695e0da34a77d7d05c5743.png
https://s1.运维网.com/oss/201711/07/55440fdfc6659cbb1bb6bc2a83d8198b.png
https://s4.运维网.com/oss/201711/07/d07f1de7b29cf61261d5ca8f18f8ba73.png
二、
LNAMMP架构:Linux+Nginx+Apache+MySQL+Memcached+PHP
1.在两个后端RS上创建数据库
MariaDB [(none)]>create database dzdb;
MariaDB [(none)]> grant all on dzdb.*TO 'dzuser'@'172.16.%.%'IDENTIFIED BY'123456';
MariaDB [(none)]> FLUSH PRIVILEGES;
在两个后端RS上导入Discuz程序包,并解压,将解压出来的upload文件包移动到指定目录,并赋予必要的权限
cp -R ./upload /var/www/html
cd /var/www/html
chown apache:apache -R ./upload
cd upload/
chmod -R 777 config
chmod -R 777 data
chmod -R 777 uc_client
chmod -R 777 uc_server
打开浏览器查看
https://s3.运维网.com/oss/201711/07/96ff40fbd037067a42b7b2c370af4f90.png
https://s1.运维网.com/oss/201711/07/a19484574395d99115c51126f3bfa145.png
2.进行缓存设置,因为Nginx既是前端调度器,又是缓存服务器,所以选取其中一个调度器172.16.1.9作为这次的缓存服务器
在172.16.1.9上安装并开启服务
yum install -y memcached
systemctl start memcached
在后端两个RS上安装php和其连接memcache必要的扩展程序
yum install -y php php-pecl-memcache
修改/etc/php.ini该配置文件中的段中的缓存路径为如下,
session.save_handler = memcache
session.save_handler = "tcp://172.16.1.9:11211"
重载httpd
systemctl reload httpd
配置一个测试页面,以测试缓存设置是否正常
# cd /var/www/html
# vim sessstore.php
配置内容如下
页:
[1]