一、基本概念
负载平衡
大型网站都要面对宏大的用户量,高并发,海量数据等挑战。为了晋升零碎整体的性能,尽力将网络流量均匀散发到多个服务器上,以进步零碎整体的响应速度和可用性
主从配置
主从复制,是用来建设一个和主数据库齐全一样的数据库环境,称为从数据库。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。
简略来说,数据库主从配置是为了解决读写拆散,从而进步数据库性能的一种优化形式。
读写拆散
大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果咱们心愿可能线性的晋升数据库的读性能,打消读写锁抵触从而晋升数据库的写性能,那么就能够应用“分组架构”(读写拆散架构)
二、实现原理
如上图所示,用户拜访网站,首先由负载均衡器接管,而后依据负载平衡算法,将流量平衡的调配给代理的 web 服务器以均衡各个服务器的负载压力,此时用户拜访数据库时,通过读写拆散调配给不同的服务器,当有写入操作时,主服务器通过复制的形式将数据同步到从服务器,从而实现主从服务器的数据对立。
三、环境搭建
理解完基本概念和实现原理后咱们开始进行试验环境搭建,咱们须要有 1 个负载平衡服务器,2 个 web 应用服务器,2 个数据库服务器。试验环境为树莓派 4B
1、docker 装置和国内镜像配置
curl -sSL https://get.daocloud.io/docker | sh
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、镜像拉取
拉取 nginx 镜像 docker pull nginx:latest
拉取 mysql 镜像docker pull mysql:latest
3、启动容器
首先咱们创立平衡服务器容器,映射容器 80 端口到宿主机 8111 端口上, 把容器 /etc/nginx/conf.d 目录挂载到宿主机 /data/nginx/conf.d 目录
docker run --name nginx_balance -p 8111:80 -v /data/nginx/conf.d/:/etc/nginx/conf.d/ -itd nginx
再创立两个 web 服务器容器来承载业务, 映射出 8112 和 8113 端口
docker run --name nginx_web1 -p 8112:80 -itd nginx
docker run --name nginx_web2 -p 8113:80 -itd nginx
最初再创立两个 mysql 服务器容器
docker run -p 8114:3306 --name mysql_master -e MYSQL_ROOT_PASSWORD=123456 -itd mysql
docker run -p 8115:3306 --name mysql_salve -e MYSQL_ROOT_PASSWORD=123456 -itd mysql
创立实现之后通过 docker ps
命令查看创立的容器列表
4、web 服务器和负载平衡服务器配置
批改 nginx_web1 和 nginx_web2 服务器默认 nginx 输入页面来用来辨别负载平衡服务器拜访了哪个 web 服务器
批改 web 服务器默认页面
进入 nginx_web1 容器外部,批改默认页面内容
docker exec -it nginx_web1 bash
root@e94a6acc59fc:/# cd /usr/share/nginx/html/
root@e94a6acc59fc:/usr/share/nginx/html# rm index.html
root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx_web1 ninetySeven > index.html
root@e94a6acc59fc:/usr/share/nginx/html# exit
再进入 nginx_web2 容器外部批改默认页面内容
docker exec -it nginx_web2 bash
root@e94a6acc59fc:/# cd /usr/share/nginx/html/
root@e94a6acc59fc:/usr/share/nginx/html# rm index.html
root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx_web2 ninetySeven > index.html
root@e94a6acc59fc:/usr/share/nginx/html# exit
负载平衡服务器配置
批改负载平衡默认 nginx 配置,因为咱们对容器进行了文件挂载,所以间接在宿主机上改变 sudo vim /data/nginx/conf.d/default.conf
批改内容如下
upstream ces {
#server 服务 ip 地址: 端口号 weight 示意权值,权值越大,被调配的几率越大;
server 192.168.0.111:8112 weight=1;
server 192.168.0.111:8113 weight=1;
}
server {
listen 80;
listen [::]:80;
location / {proxy_pass http://ces;}
}
批改实现之后重启容器
docker restart nginx_web1 nginx_web2 nginx_balance
重启实现之后,咱们通过浏览器拜访 192.168.0.111:8111
来查看后果
至此负载平衡配置实现,接下来进行数据库主从配置和读写拆散