高可用集群lnmp部署文档
署名:侯鹏程
简介:
集群:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。
高可用集群:高可用集群是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度.
Lnmp:是linux服务器,php,mysql,nginx来共同完成一个服务.
一: 前期准备
1: 准备7台服务器 1核1G
2: ip规划:
高可用lnmp服务器集群ip部署规则
服务器名称 ip
lvs服务器 192.168.206.139-140
vip 192.168.206.121
nginx服务器 192.168.206.141-145
php服务器 192.168.206.146-150
mysql服务器 192.168.206.161
二: 安装前的检查:
1: 检查网络:
ping www.baidu.com
2: 检查防火墙:
Systemctl status firewalld
关闭防火墙: systemctl stop firewalld
关闭setenforce: setenforce 0
3: 检查内核系统,要保持一致
uname -r
cat /etc/redhat-release
4: 时间同步 检查时间
ntpdate ntp.aliyun.com 同步阿里云的时间
检查时间
Date
三: 准备安装包,开始安装配置中间件
1:配置lvs和keepalived
(1): 安装配置lvs+keepalived
安装lvs和keepalived
yum -y install keepalived ipvsadm
(2):配置keepalived:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
! vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.206.121
}
}
virtual_server 192.168.206.121 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.206.141 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.206.142 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
(3):启动keepalived 并检查vip是否生成
systemctl start keepalived
Ip a
备服务器只需把master改为backup,把优先级进行调整即可
2:配置nginx和php的分离部署
(1):安装nginx
下载组件
yum -y install gcc pcre-devel zlib-devel
源码安装nginx
上传源码包
tar -zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
./configure && make && make install
(2):配置nginx
location / {
root /www;
index index.html index.php; #:这里配置让nginx支持php
}
location ~ .php$ {
root /www;
fastcgi_pass 192.168.206.143:9000; #:php服务器的ip和端口
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;
}
(3)启动nginx
/usr/local/nginx/sbin/nginx
此处 当nginx服务起来之后,keepalived检测到之后会把规则自动添加到ipvsadm中,我们回到lvs的服务器查看
Ipvsadm -Ln
规则中有nginx服务器的ip说明添加成功
(4) 安装php
yum -y install php php-mysql php-gd php-fpm
(5) 配置php
vim /etc/php-fpm.d/www.conf
; Start a new pool named ‘www’.
[www]
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; ‘ip.add.re.ss:port’ - to listen on a TCP socket to a specific address on
; a specific port;
; ‘port’ - to listen on a TCP socket to all addresses on a
; specific port;
; ‘/path/to/unix/socket’ - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = 192.168.206.143:9000 ;此处写本机的ip
; Set listen(2) backlog. A value of ‘-1’ means unlimited.
; Default Value: -1
;listen.backlog = -1
; List of ipv4 addresses of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
listen.allowed_clients = 192.168.206.141 ;此处写nginx服务器ip
(6) 启动php-fpm
systemctl start php-fpm
(7) 创建/www目录并创建测试页面
mkdir /www
vim /www/index.php
(8) 登录nginx服务器
登录html查看结果
192.168.206.141
登录php查看结果
192.168.206.141/index.php
出现两个不同的页面说明成功
3: nginx服务器vip配置
配置VIP
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.189.121
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0
ARP级别
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.189.121 dev lo:0
4:安装部署mysql
(1): 安装mysql
Yum -y install mariadb mariadb-server
(2):创建数据库,授权
systemctl start mariadb
mysql
create database shop;
grant all on shop.* to shop@’%’ identified by ‘123’;
flush privileges;
5:上线项目
(1):把项目包上传到nginx和php的目录里并且给目录权限
chmod 777 -R /www
(2):登录进行注册 把项目和mysql服务器进行绑定
(3):登录项目查看结果
五: 疑难问题解决 坑点分析
1:在keepalived的地方经常出不来vip 我们要仔细看看keepalived的配置,有一点点的配置错误就出不来, 另外如果出现vip不漂移的情况我们要检查两台keepalived的服务器链接是否正常.
2:为了防止出错,我们lnmp处理静态的目录和处理php的目录最好要保持一致
3:我们要先做一套nginx+php在做另外一套,这样方便我们排错.
4:在下载组件的时候php php-mysql php-fpm php-gd一定要下载全,少一个我们在后面上线项目的时候都容易报错
5:php与nginx没有结合成功时要检查php-fpm的服务有没有起来.
六: 总结
这套lnmp高可用集群可以完成一些并发量高的一些服务,它有很多优势,比如nginx服务器是可以扩展的,它的防止单点故障是非常完善的.如果我们的项目的并发量更高的话,我们可以在加一台redis服务器用来抗住高峰期的并发.这套系统的mysql环节还可以做高可用,我们可以根据公司的实际情况来进行一些增加,总之这个架构十分的灵活,可靠.