单一架构和集群架构概念
单一架构
单一架构缺点:
同时容纳在线人数数量有限
不容灾,一个崩掉,整个系统都会崩溃
所以发展了集群架构
集群架构可以实现负载均衡,容灾能力较强,一个tomcat崩掉,其他的还可以用
部署
1、下载镜像
docker pull tomcat
等待……
docker pull mysql:5.7
等待……
docker pull nginx
等待……
Nginx是一个高性能的HTTP和轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器
Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名
2、启动Mysql、导入数据
启动
docker run -d -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
mysql的版本是5.7
MYSQL_ROOT_PASSWORD=root是设置mysql的登录密码
从本地复制文件到容器内
docker cp /root/docker/mysql/easybuy.sql 容器ID:/
拷贝文件到容器根目录
进入容器,登录mysql,密码不回显
docker exec -it 容器ID bash
mysql -uroot -p
创建数据库
create database easybuy;
导入数据
use easybuy;
source easybuy.sql
授权允许远程连接
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
3、启动tomcat容器(3个)、部署项目
启动
docker run -d -p 8081:8080 --name tomcat1 tomcat
docker run -d -p 8082:8080 --name tomcat2 tomcat
docker run -d -p 8083:8080 --name tomcat3 tomcat
部署项目
docker cp /root/docker/tomcat1/Easy.war 容器1ID:/usr/local/tomcat/webapps
docker cp /root/docker/tomcat2/Easy.war 容器2ID:/usr/local/tomcat/webapps
docker cp /root/docker/tomcat3/Easy.war 容器3ID:/usr/local/tomcat/webapps
4、启动Nginx容器
启动
docker run -d -p 80:80 --name nginx 镜像ID
设置nginx.conf本地挂载点
因为容器是一个最小的系统,没有vim命令
所以我们需要设置本地挂载点,修改本地时,容器中的文件也会修改,类似一个快捷方式
docker cp nginx容器ID:/etc/nginx/nginx.conf /root/docker/nginx
docker rm -f 旧的nginxID
docker run -d -p 80:80 --name nginx -v /root/docker/nginx/nginx.conf:/etc/nginx/nginx.conf nginx镜像ID
本地修改nginx.conf
vim /root/docker/nginx/nginx.conf
//添加内容
upstream easybuy{
server 192.168.160.10:8081;
server 192.168.160.10.8082;
server 192.168.160.10:8083;
}
server{
listen 80;
server_name 192.168.160.10;
location /{
proxy_pass http://easybuy;
}
}
upstream声明tomcat集群里每一个节点的地址,easybuy是集群名,可自定义
server配置nginx服务
listen 80; nginx监听80端口
server_name 192.168.160.10 配置nginx访问入口
location nginx反向代理到http://easybuy(easybuy里面有三个节点,nginx选用那个节点返回是有自己的算法的)
重启容器
修改好配置文件后,需要重启容器才能生效
docker restart nginx容器ID