项目:企业网站架构(容器)
环境:现有某公司现需求使用Docker技术将Nginx(可使用Apache)+Tomcat作为企业内部站点的展示,同时需要使用ELK技术对Nginx进行日志收集
架构图
需求
- 1、使用技术:Docker(Docker-Compose编排)部署集群(需求可以通过win10访问到内部站点首页(首页内容THIS IS
KY06) - 2、使用ELK收集Nginx/Apache日志信息,并同样需要使用win10访问到Kibana所提供的数据展示页面
- 3、使用consul技术(自动发现、更新、配置功能)实现自动发现/配置服务
consul自动发现服务
master:192.168.158.30
consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.158.30 -client=0.0.0.0 -node=consul-server01 &> /var/log/consul.log &
tomcat群集服务器:192.168.158.40
docker run -d --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock --restart=always gliderlabs/registrator:latest -ip=192.168.158.40 consul://192.168.158.30:8500
#创建nignx容器,测试consul网页能否获取到
docker run -dit -p:83:80 --name tom1 -h tom-01 nginx
[root@server3 consul]# vi nginx.ctmpl
upstream http_backend {
{
{
range service "tomcat"}} #寻找相同的名字
server {
{
.Address}}:{
{
.Port}};
{
{
end}}
}
server {
listen 1222; #代理端口,自动添加的容器通过此端口轮询
server_name localhost 192.168.158.30;
access_log /var/log/nginx/july.cn-access.log;
index index.html index.php;
location ~ \.jsp$ {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Fprwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_backend;
}
}
Docker-Compose编排容器
[root@localhost compose_nginx]# ls
docker-compose.yml tomcat wwwroot
[root@localhost compose_nginx]# tree
.
├── docker-compose.yml
├── tomcat
│ ├── apache-tomcat-8.5.16.tar.gz
│ ├── Dockerfile
│ └── jdk-8u91-linux-x64.tar.gz
├── wwwroot1
│ └── index.jsp
└── wwwroot2
└── index.jsp
[root@localhost compose_nginx]# cat docker-compose.yml
version: '3'
services:
tomcat15:
image: tomcat:latest
hostname: tomcat16
build:
context: ./tomcat
dockerfile: Dockerfile
ports: