目 录
一,集群构架图
二,前期准备
(一)ip规划
(二)服务器配置
(三)简短描述
三,安装检测
(四)网络
(五)防火墙
(六)系统
(七)时间
四,准备安装包
五,安装部署
六,测试
七,测试步骤
八,总结
一、集群构架图
随着互联网IT行业的发展,越来越多的企业开始使用开源软件搭建自己的web架构,主流的LVS也得到了广泛的应用,在保证高可用的同时,用户对网站的体验速度也有了很高的要求,这时候需要我们在我们的架构既要满足高并发同时还要求高速度。 今天我们来搭建主流架构Lvs+Keepalived+nginx+php+mysql
二、前期准备
1.Ip规划
主 Lvs+keepalived 192.168.254.10
从 lvs+keepalived 192.168.254.20
Nginx 192.168.254.40 一
Nginx 192.168.254.50 二
Php 192.168.254.60 一
Php 192.168.254.70 二
Mysql 192.168.254.80
2. 服务器配置
准备七台centos7虚拟机
三、安装检测
1.测试网络
测试ip是否可用 ping www.baidu.com
2. 关闭防火墙
systemctl stop firewalld
setenforce 0
3.系统是否统一
uname -r
[root@nginx1 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
4.时间是否统一
同步时间 netdate ntp.aliyun.com
四、准备安装包
官方网站下载Nginx包http://nginx.org/en/download
电商包 tinyshopV2.5_data.zip
五、安装部署
1.首先配置
Lvs+keepalived 10 20
安装keepalived和lvs
Yum -y install keepalived ipvsadm
进入配置文件
Vim /etc/keepalived/keepalived.conf
! vrrp_strict
vrrp_instance VI_1 {
state MASTER #在 20上改 BACKUP
interface ens33
virtual_router_id 51
priority 100 #20 改 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.254.181 #VIP
}
}
virtual_server 192.168.254.181 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.254.40 80 { #nginxt 40
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.254.50 80 { #nginx 50
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
查看是否有VIP ip a ipvsadm -Ln
在192.168.254.40 50
2.Real server 的配置
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.254.181 #vip
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0
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/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
route add 192.168.254.181 dev lo:0
这样lvs+keepalived就配置完成了
在192.168.254.40 50
3.配置nginx和php的结合
安装nginx插件
yum -y install gcc gcc-c++ pcre-devel zlib-devel
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure && make && make install
systemctl stop firewalld
setenforce 0
/usr/local/nginx/sbin/nginx
vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.htm;
}
location ~ .php$ {
root /www;
fastcgi_pass 192.168.254.60:9000; #php的ip 或50
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi_params;
}
4.在192.168.254.60 70配置php
安装php插件
yum -y install php php-gd php-fpm php-mysql
mkdir /www
vim /www/index.php
vim /etc/php-fpm.d/www.conf
测试php 192.168.254.40 50/index.php
5.开始配置电商
我们同时要在nginx主机上和php主机上一块安装电商
在/usr/local/nginx/html 下 40 50
在/www/ 下 60 70
进行解 unzip tinyshopV2.5_data.zip
给权限 chmod -R 777 .*
6.安装mysql
给电商创建一个数据库指定数据库
Yum -y install mariadb mariadb-server
Systemctl start mariadb
Create database bbs charset utf8;
Grant all on bbs.* to tom@’%’ identified by ‘123’;
开始访问电商 40 50 就可以进入电商了
7.配置nginx的负载均衡
Vim /etc/local/local/nginx/conf/nginx.conf
添加配置
upstream webs {
server 192.168.254.60:9000;
server 192.168.254.70:9000;
}
location ~ .php$ {
root /www;
fastcgi_pass webs;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi_params;
}
配置完成
六、测试 + 测试步骤
1.关闭 10 keepalived 查看是否VIP漂移
3.关闭一台nginx查看vip是否能够正常运行 关闭 40
4.关闭一台php查看VIP是否正常运行 关闭 60
5.测试完成开启 40 50 让VIP可以正常访问
一,坑点分析
在配置php和nginx交互时在指定nginx要加注释否则无法负载 不加注释的话就直线指定nginx无法交叉负载
在配置Real server和nginx时切记注意大小写否则无法实现效果
裂脑
主备keepalived服务器同时出现了VIP;导致vip无法正常使用
常见原因为防火墙配置所致导致多播心跳失败
vip能ping通,但是vip监听的端口不通
第一个原因:nginx1和nginx2两台服务器的服务没有正常启动
第二个原因:请参考上面Nginx服务器那一大项中所说的配置,可能没有配置好
七、总结
本文对Lvs+Keepalived+nginx+php+mysql进行了详细配置,这套lnmp高可用集群可以解决面向高并发的架构,我们也可以更好的扩展比如添加zabbix和redis。