简述
本文中,将使用nginx+docker来搭建iarc-service的集群。
源代码
环境
IDE: IntelliJ IDEA
JDK: 1.8.0_u162
Build: Maven 3.0.5
Framework: Spring Boot
WebServer: Nginx
Container: Docker
开发
以下步骤在CentOS7中完成
创建Dockerfile
在iarc-service根目录下新建文件’Dockerfile’,内容如下:1
2
3FROM frolvlad/alpine-oraclejdk8:slim
ADD ./target/iarc-service-0.0.1-SNAPSHOT.war app.war
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.war"]
构建docker镜像
docker build -t iarc/iarc-service .
运行2个docker容器
1 | $ docker run -it -p 8003:8080 --rm --name iarc-service-1 iarc/iarc-service |
配置负载均衡
配置文件路径是 /etc/nginx/nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14http {
upstream iarc_service {
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
server {
listen 8081;
location / {
proxy_pass http://iarc_service;
}
}
...
}
开放8081端口
1 | $ firewall-cmd --zone=public --add-port=8081/tcp --permanent |
调试
访问
本地使用curl localhost:8081/user/getUser/123
来验证,外部使用http://192.168.56.102:8081/user/getUser/123
来访问
问题
由于SELinux的限制,启动nginx时报错[emerg] bind() to 0.0.0.0:8081 failed (13: Permission denied)
解决方案:1
2
3
4
51、临时关闭selinux
setenforce 0
2、永久关闭selinux,需要重启
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
部署
无