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服务