nginx负载均衡之docker容器
nginx负载均衡之docker容器大致分为几种情况1.容器应用间无关联这种情况,可以采用除nginx端口外容器应用端口全部都指向nginx所指向的宿主机端口,然后2.容器为集群模式
分为两种情况:
1.容器间无关联
这种情况,可以采用除nginx端口外容器应用端口全部都指向nginx所指向的宿主机端口,然后由nginx统一进行映射。
2.容器间为集群模式
这种情况,可以指定集群某个节点为主节点,然后其他全部节点在容器内映射各自的端口,但是记得映射宿主机端口的时候,统一映射到一个端口上,然后nginx负载均衡到集群的各个节点的各个容器的端口。
例如:es集群
容器1:es01
容器2:es02
容器3:es03
容器4:nginx(用来做负载均衡)
es镜像映射宿主机需要:
es01 8080:8080
es02 8081:8080
es03 8082:8080
然后nginx指定监听端口(例如8800),对域名进行转发,前端访问localhost:8800,如可随机访问es集群节点即配置成功(默认轮询方式,可自行配置)。
具体nginx的配置,放到http里面:
upstream 域名 {
server 容器ip:8080;
server 容器ip:8081;
server 容器ip:8082;
}
server {
listen 8800;
server_name nginx-proxy;
location / {
proxy_pass 域名
}
}
附1:
具体验证过程(包含安装es):
1)拉取es镜像
查看es有哪些镜像,一般选择stars数最多的:
docker search elasticsearch
查看es的版本:
curl https://registry.hub.docker.com/v1/repositories/elasticsearch/tags| tr -d ‘[[]" ]’ | tr ‘}’ ‘\n’| awk -F: -v image=‘elasticsearch’ ‘{if(NR!=NF && $3 != “”){printf(“%s:%s\n”,image,$3)}}’
选择合适的版本拉取,一般来说es集群选择7.0以上的,7.0以下版本集群配置比较难找:
docker pull elasticsearch:7.0.0
编写配置文件(通过容器编排启动,需安装docker-compose,一般单机部署集群使用):vi docker-compose.yml
这里需要注意的是,启动集群如果不需要负载均衡,那么只需要暴露一个端口即可。如果nginx作为负载均衡,就需要在容器内部暴露不同端口,且映射到宿主机同一端口,然后nginx监听这个端口,根据端口将请求转发到不同的es节点。
在docker中,配置文件一般都通过挂载的方式挂载到容器中,需要将我们自己的nginx的配置文件通过挂载的方式替换掉nginx容器实例内部的配置文件,也就是指nginx.config。
运行启动命令:docker-compose up -d
-d指的是以后台方式运行,如果需要观察启动日志,可以去掉。验证是否启动成功也很简单,直接localhost加端口号访问nginx即可跳转到对应es节点,多次访问会跳转到不同的节点即部署成功。
附2:
安装docker
curl -sSL https://get.daocloud.io/docker | sh
安装docker-compose
curl -L “https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
添加执行权限:chmod +x /usr/local/bin/docker-compose
需要把docker-compose设置为全局环境变量,可通过软链接的方式:ln -sf /usr/local/bin/docker-compose /usr/bin
更多推荐
所有评论(0)