一、入门案例
新建项目目录,新建docker-compose.yml文件
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- port:port(默认80)
- 将服务器端口80进行放行
- 浏览器访问主机ip看到上图即安装成功
- 查看redis容器的配置文件,进入容器后:
1、/etc/nginx/nginx.conf
2、/conf.d/default.conf
二、使用数据卷的方式,实现自定义主页
- down掉上一个docker容器
- 1、更改docker-compose为:
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes: # 为了方便写个配置文件 使用数据卷 做映射
- /opt/install/nginx/conf.d/:/etc/nginx/conf.d # 配置文件
- /opt/install/nginx/static/:/usr/share/nginx/html #静态资源
- 左边为映射的本地数据卷,: 右边为nginx的容器内部文件目录,创建容器后,nginx自动访问对应的数据卷目录
- 2、新建conf.d/default.conf,里面是nginx的配置信息
server{
# 监听端口
listen 80;
server_name 10.9.48.122;
location / {
# 资源路径
root /usr/share/nginx/html;
# 主页
index index.html index.htm;
}
}
- 注意空格
· 新建static目录,这里创建一个index.html文件(和主页名称对应)。 - 重启docker-compose restart
- conf.d下的为监听、动态、静态资源路径设置、主页的设置,static则为数据卷的静态资源放置路径。
反向代理,通过nginx访问tomcat
类似于梯子,则是正向代理,配置到客户端的代理服务器。
反向代理则是配置到服务端,用于代理服务器,隐藏真实服务器地址,调配服务器压力、
- 先启动一个tomcat
- down掉上一个nginx
- -修改conf.d为
server{ #服务器
listen 80;#监听的端口
server_name x.x.x.x; #监听的ip / 虚拟机ip
# 基于反向代理访问到Tomcat服务器
location / {
# proxy_pass 代理访问
proxy_pass http://10.9.48.xx:8080/;
}
}
- up -d 重新建立nginx,输入服务器ip,不用带端口,可以看到tomcat首页代表成功。
创建多台tomcat
通过数据卷的方式实现,集群中有多少台tomcat就要创建多少个“tomcat/ROOT/”目录
- 集群中有多少个tomcat服务器就要在docker-compose.yml中复制多少份,改:tomcat服务器名称、容器名称、端口、数据卷的映射路径
version: '3.1'
services:
tomcat1:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat1
ports:
- 8081:8080
volumes:
- /opt/install/package/nginx_proxy_tomcat/t1:/usr/local/tomcat/webapps
- 冒号右侧为tomcat容器,左侧为数据卷的映射路径
搭建好tomcat集群后,即可让Nginx进行代理并实现负载均衡了,Nginx提供4种负载均衡策略。
负载均衡-轮询策略
轮询方式实现的是nginx对于tomcat集群的均衡分配,采取轮询方式进行任务分配。
- tomcat服务器已经是启动状态
- 进入到nginx的目录下,修改conf.d
# 配置tomcat的负载均衡-轮询
upstream servers{
# tomcat的开放端口,有几台放几个
server 10.9.48.122:8081;
}
server{
# nginx监听的位置
listen 80;
server_name 10.9.48.122;
location / {
proxy_pass http://servers;
}
}
- 通过访问服务器地址,即可查看效果
负载均衡-权重策略
设置权重策略可手动干预nginx对于tomcat集群的工作负载分配,适用于需要灵活分配负载或者集群性能不一致等场景。
# 配置tomcat的负载均衡
upstream servers{
# tomcat的开放端口
server 10.9.48.122:8081 weight=4;
server 10.9.48.122:8082 weight=3;
server 10.9.48.122:8083 weight=3;
server 10.9.48.122:8084 weight=1;
}
server{
# 监听的位置
listen 80;
server_name 10.9.48.122;
location / {
# 资源路径
#root /usr/share/nginx/html;
# 主页
#index index.html index.htm;
#需要代理的ip 与 端口
#proxy_pass http://10.9.48.122:8080;
# 负载均衡
proxy_pass http://servers;
}
}
- restart 容器即可看到效果
负载均衡-IPHash策略
通过对请求的客户端的ip进行hash,实现同一个ip只能访问某一个固定的一个服务器场景,可与权重策略同时使用。
upstream servers{
#加入一段ip_hash;即可
ip_hash;
# tomcat的开放端口
server 10.9.48.122:8081 weight=4;
server 10.9.48.122:8082 weight=3;
server 10.9.48.122:8083 weight=3;
server 10.9.48.122:8084 weight=1;
}
- restart 容器即可看到效果
负载均衡-最小连接数策略
将请求分配到当前连接数量最少的服务器。不可与其他策略混用
upstream servers{
#加入least_conn;
least_conn;
....省略
}
小记:
- 不添加默认轮询策略,添加weight实现指定权重,添加ip_hash实现IPHash策略,least_conn实现优先最小连接数策略。
- 先启动tomcat集群,尝试使用容器端口直接可访问,再启动Nginx,使用服务器ip访问。
- 若拒绝访问连接,查看日志排查。可尝试主机开放集群中tomcat的端口。(已踩坑)
firewall-cmd --permanent --add-port=port/tcp
firewall-cmd --load