目录
一、项目环境
三台后端web服务器:
web1 192.168.249.193
web2 192.168.249.194
web3 192.168.249.191
两台负载均衡服务器:
LB1 192.168.249.192
LB2 192.168.249.196
一台NFS服务器:
192.168.249.195
一台DNS服务器:
192.168.249.197
一台监控服务器:
192.168.249.198
用户通过输入liquan.com域名访问我的web后端服务器,首先DNS服务器会通过将liquan.com对应两台负载均衡服务器的IP地址实现DNS负载均衡,DNS服务器也可以给整个web集群提供域名解析。两台负载均衡服务器通过http七层负载均衡的方式将流量分发到三台web后端服务器上,并且使用keepalived配置双vip的方式实现高可用。NFS服务器实现三台web后端服务器的数据一致性。监控服务器则监控整个web集群的性能。
二、项目步骤
1.dns服务器的配置
下载bind软件包:yum install bind* -y
启动named(DNS 服务器软件的一种实现):service named start
将域名服务器设置为本机(添加最下面的一行):vim /etc/resolv.conf
下面为注释了114.114.114.114域名服务器的结果
证明dns服务器配置成功。
修改/etc/named.conf,让局域网其他主机访问到此域名服务器:vim /etc/named.conf
重启服务:service named restart
修改 /etc/named.rfc1912.zones
在localhost添加一段配置:
进入/var/named,保留文件属性复制named.localhost 为liquan.com.zone
添加了两条对应两台负载均衡服务器的域名解析,可以实现DNS负载均衡(轮询)
重启服务:service named restart
自此,DNS服务器配置成功。
2.后端web服务器的配置
编译安装nginx:
先安装软件源,解决软件依赖
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget
新建用户,用它启动nginx进程
useradd xinboss -s /sbin/nologin
新建文件夹并进入该路径
mkdir /lianxi/nginx/xinboss -p
cd /lianxi/nginx/xinboss
在网上下载nginx安装包
wget http://nginx.org/download/nginx-1.22.1.tar.gz
解压安装包并进入nginx-1.22.1
tar xf nginx-1.22.1.tar.gz
cd nginx-1.22.1(在此目录下才能执行configure)
指定安装路径,启动nginx的用户和组
./configure --prefix=/usr/local/xinboss --user=xinboss --group=xinboss --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_gunzip_module
编译安装
make install
安装成功
启动nginx
3.负载均衡服务器的配置(负载均衡是用nginx实现的)
修改/usr/local/xinboss/conf/nginx.conf,实现http七层负载均衡,如下
也可以实现基于端口的四层负载均衡:
stream {
upstream liquanapp1{
}
server {
listen 80; #基于80端口转发
proxy_pass liquanapp1;
}
upstream dns_servers {
least_conn;
server 192.168.249.191:53;
server 192.168.249.193:53;
server 192.168.249.194:53;
}
server {
listen 53 udp; # 基于53端口转发
proxy_pass dns_servers;
}
}
重新加载nginx:nginx -s reload
查看是否实现的方法:访问负载均衡服务器web页面,分别展示后端web的三个页面(默认为轮询算法),则成功。
其他的负载均衡器的算法:最小连接数、IP哈希(绑定客户机与服务器,实现cookie和session的绑定)
4.实现负载均衡服务器的高可用
在两台负载均衡服务器上安装keepalived:yum install keepalived -y
双vip配置:
修改,vim /etc/keepalived/keepalived.conf
负载均衡服务器LB1配置如下
负载均衡服务器LB2配置如下
重启keppalived服务:service keepalived start
ip add查看:
LB1有了vip:192.168.249.166
LB2有了vip:192.168.249.167
5.NFS服务器的配置
安装软件包:yum install rpcbind nfs-utils -y
启动服务:
service nfs-server start
service rpcbind start
新建共享目录:/web
在目录下新建文件并写入一些内容:vim index.html
6.监控服务器的配置
这里为了方便,使用容器下载的Prometheus:
docker run -d -p 9090:9090 --name lq_prom prom/prometheus
prometheus安装好之后,每个服务器上都要安装node-exporter
下载地址:
下载并解压:tar xf node_exporter-1.5.0.linux-amd64.tar.gz
新建目录:mkdir /node_exporter
后台运行:nohup node_exporter --web.listen-address 192.168.249.195:8899 &
安装node-exporter成功之后的样子:
以监控一台服务器为例,到容器内部修改 /etc/prometheus/prometheus.yml文件(这里我采用的方法是docker cp,把容器里面的文件复制到宿主机修改,再复制回去),需要监控哪台服务器就添加该服务器的名字、IP地址和node-exporter端口:
重启容器:docker restart lq_prom
实现效果(一台为例):
安装Grafana
拉取镜像:docker pull grafana/grafana-enterprise
启动容器:docker run -d -p 3000:3000 --name=lq_grafana grafana/grafana-enterprise
网页上访问成功(默认的用户名和密码都是admin):
数据源---选择Prometheus数据库,添加监控的IP地址和端口
导入出图模板,这里使用的是1860模板
结果:
自此,实现了整个web集群的搭建。
此外,可以对集群进行压力测试,使用ab软件
安装ab软件:yum install ab -y
测试:ab -n 1000 -c 10 http://liquan.com/