初创公司利用Docker持续集成部署(2)

ip每个主机取值不相同
hostname默认会是主机名,但很多情况不能访问,所以使用主机IP
如果要在WEB UI上看到日志,需要配置log_dir属性
executor_registration_timeout容器执行的超时时间,如果docker pull的时候非常耗时,可能会导致这里超时.

6)配置marathon平台

7)配置consul集群

需要部署consul的节点,mesos-master和mesos-slave
#将consul可执行文件放到/usr/bin目录下
mkdir /usr/local/consul/conf
#创建consul配置文件目录
cat /usr/local/consul/conf/config.conf
{
"datacenter": "diliPAAS"
,"data_dir": "/usr/local/consul/data"
,"log_level": "INFO"
,"node_name": "master1"
,"server": true
,"retry_join":["192.168.10.210","192.168.10.184","192.168.10.152","192.168.10.136"]
,"rejoin_after_leave":true
,"client_addr":"192.168.10.203"
}
#retry_join IP为各个consul节点的IP,client_addr为本机IP地址,server为工作模式。
consul agent -node=master1 -server -bootstrap -data-dir=/usr/local/consul/data -dc=diliPAAS
#前台首次启动命令,需要指定consul相关数据存放目录,当启动其他consul之后可以使用如下命令启动
nohup consul agent -config-file=config.conf >consul.out&
consul members -rpc-addr=192.168.10.210:8400
#查看consul集群情况,其中rpc-addr为任意节点consul IP. 

8)nginx配置

因为我们的nginx和DNS配置是通过consul-template生成配置文件的,我们先把nginx起来然后配置consul-template通过模板生成最新的配置文件。
mkdir /data/docker/nginx/conf/
#创建nginx配置映射目录,ssl等文件也放在这个目录
docker run -d --name nginx -p 80:80  -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf index.alauda.cn/library/nginx
#从灵雀云拉的镜像运行,如果之前拉过并push到仓库,可以从我们之前放到docker.smart.com仓库中拉去。

9.配置consul-template来动态发现注册服务。

配置nginx的服务发现和注册

cat /data/docker/nginx/conf/nginx.conf.tmpl
#nginx配置模板文件
{{$model:="test"}}
worker_processes 1;

events {
worker_connections 65535;
}

http {

#lua_code_cache off;
client_max_body_size 1G;
server_names_hash_bucket_size 64;
    upstream marathon {
            server 192.168.10.186:8080;
            server 192.168.10.124:8080;
    }

    server {
            server_name marathon1.paas.smart.com;
            listen 80;
            location / {
                    proxy_pass ;
            }
    }

    upstream registry {
            server 192.168.10.200:80;
    }

    server {
            server_name docker.smart.com;
            listen 80;
            location / {
                    proxy_pass ;
            }
    }


############################loop {{range services}}
{{$nameArr := .Name | split "-"}}
{{if gt (len $nameArr) 1}}
{{if eq $model (index $nameArr 1)}}
{{$name := (index $nameArr 0)}}
{{if service .Name }}
upstream {{.Name}} { {{range service .Name}}
    server {{.Address}}:{{.Port}};#{{range .Tags}}{{.}},{{end}}{{end}}
}
server {
    server_name {{$name}}.smart.com;
    listen 80;
    location / {
        proxy_pass {{.Name}};
        proxy_set_header Host            $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            }
    }

{{if eq $name  "passport"}}
upstream {{.Name}}ssl { {{range service .Name}}
    server {{.Address}}:{{.Port}};{{end}}
}
server {
    server_name {{$name}}.smart.com;
    listen 443;
    ssl                  on;
    ssl_certificate      smart_server.pem;
    ssl_certificate_key  smart_server.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  RC4:HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;
    location / {
        proxy_pass {{.Name}}ssl;
        proxy_set_header Host            $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            }
    }
{{end}}
{{end}}

{{end}}
{{end}}
{{end}}

}
#nginx配置文件模板文件内容
mkdir -p /usr/local/consul-template/
#创建consul-template 配置文件目录
cat nginx.tmpl.conf

consul="192.168.10.203:8500"
template {
    source="/data/docker/nginx/conf/nginx.conf.tmpl"
    destination="/data/docker/nginx/conf/nginx.conf"
    command="docker exec nginx nginx -s reload >> /dev/null"
}
#其中consul中的IP为mesos-master
nohup consul-template -config=./nginx.tmpl.conf &
#启动consul-template更新nginx服务 



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b8e2c9457544d0567f77feff357fd34b.html