准备两台服务器 两台nginx 一个RocketMq
Docker安装nginx
1.docker pull nginx 拉取镜像,默认最新版本
2.docker run -d -p 80:80 nginx 启动容器
3.mkdir -p /opt/nginx-test/{conf,conf.d,html,logs} 创建nginx文件夹
4.copy文件:把刚才启动的nginx容器下的文件拷贝到我们新建的目录下
docker cp 3d3e6787bd63:/etc/nginx/nginx.conf /opt/nginx-test/conf/
docker cp 3d3e6787bd63:/etc/nginx/conf.d/default.conf /opt/nginx-test/conf.d/
5.关闭掉刚才启动的容器 docker stop 3d3e6787bd63
6.自定义启动我们的nginx: docker run --privileged=true --restart=always --name nginx-test -d -p 8392:80 -v /opt/nginx-test/log:/var/log/nginx -v /opt/nginx-test:/usr/share/nginx/html -v /opt/nginx-test/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx-test/conf.d:/etc/nginx/conf.d nginx
按照上面的步骤搭建nginx-test2
在/opt/nginx-test 目录上传静态文件 访问http://ip:8392/1.jpg 进行测试
搭建nginx启动问题:
1.访问静态文件报错: [error] 25483#0: *89 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.10.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.10.133"
default.conf文件添加
location /favicon.ico {
log_not_found off;
access_log off;
}
2.403 权限问题 :nginx.conf 修改 user:root
Docker安装rocketMq: 网上搜索相关资源
在业务服务中配置rocketMq消息发送模式为广播模式,这样两台服务都能接收消息
consumer.setMessageModel(MessageModel.BROADCASTING);
静态文件同步方式
1.在对静态文件增删改操作时,通过发送消息的方式,让两台nginx服务都能对自己的静态文件进行同步
2.定时任务定时查询两台服务的静态文件,比较同步最新的数据
3.访问静态资源的时候通过网关转发的方式请求到任意一台正常工作的nginx上