葡京国际平台手动搭建openstack的痛苦经历

     
 openstack真的是一个分外痛的物,好当产生机动部署工具,虽然发出机关部署工具得以好我们安排下,但是读书吧,第一不成最好权威动部署,因为手动部署再次能够我们了解openstack的劳作流程及各组建中的关系。

参考文档:

       系统平台cnetos6.7 X86

  1. mesos:http://mesos.apache.org/
  2. mesosphere社区版:https://github.com/mesosphere/open-docs
  3. mesosphere仓库:https://github.com/mesosphere/open-docs/blob/master/downloads/mesos.md
  4. docker-ce安装:https://docs.docker.com/engine/installation/linux/docker-ce/centos/
  5. 原理&安装参考1:http://www.cnblogs.com/kevingrace/p/5685313.html
  6. 规律&安装参考2:http://www.xuliangwei.com/xubusi/422.html

       openstack icehouse

正文主要干基于zookeeper+mesos+marathon的docker集群管理平台的布置操作,原理可见上面参考文档。 

     
我是依照openstack的原版手册安装之,安装keystone,glance和compute都非常顺利,但是到了neutron的时节就是痛苦了,google了转有关neutron的稿子,全是说而多多么的扑朔迷离,对于一个新手来说实在是一个莫大的打击什么。(没道,还是要一致步一步的移动下)。在斯过程被告负了成千上万浅,最后将了点儿圆满竟为好了。

一.环境

同、注意事项    

1. 拓扑

葡京国际平台 1

1、Neutron的布局文件中而将auth_uri换成identity_uri;(其他服务好用auth_url,但是neutron服务要要反吗identity_url,否则不可知正常运转) 

2. 拓扑说明

主机名

IP

OS

安装服务

master-node1

10.11.4.156

CentOS-7-x86_64-1511

zookeeper, mesos-master, marathon

master-node2

10.11.4.157

CentOS-7-x86_64-1511

zookeeper, mesos-master, marathon

master-node3

10.11.4.158

CentOS-7-x86_64-1511

zookeeper, mesos-master, marathon

slave-node1

10.11.4.146

CentOS-7-x86_64-1511

mesos-slave, docker

slave-node2

10.11.4.147

CentOS-7-x86_64-1511

mesos-slave, docker

slave-node3

10.11.4.148

CentOS-7-x86_64-1511

mesos-slave, docker

2、各安排文件属组应该吗对应的劳动之运行者用户位置,否则其拿无法访问导致服务启动失败;

3. 软件版本

服务

版本

作用

zookeeper

3.4.10

保持各master之间的通信,选举leader

mesos-master

1.3.0

管理接入mesos的各个framework & slave,并将slave上的资源按照相应策略分配给framework

mesos-slave

1.3.0

任务执行节点

marathon

1.4.7

调度器,用于下发任务,可保持长应用

docker

17.06.1.ce

具体执行docker下发任务

 

二.环境Master节点

因为master-node1为例,master-node2/node3配置根据条件微调。

至于运行虚拟机日志报错NovaException: Unexpected
vif_type=binding_failed.:的化解方案

1. zookeeper安装

请参考:http://www.cnblogs.com/netonline/p/7695034.html

ps:zookeeper需要java支持,这里装的凡jdk-8u131-linux-x64。

1.油然而生上述错误首先检查ml2布置文件是否配备是
2.查网络节点metadata_agent.ini配置文件是否错误,metadata是负担将针对neutron的操作保存在数据库(metadata_agent配置文件填写错误日志不见面报错。eg:将admin_tenant_name
= service 写成 dmin_tenant_name = service)
3.禁所以虚拟机网络功能看是否会健康运作,如果能够运行那么问题发出当netron上,如果也未克运行那么就算待检讨外了。

2. mesos-master&marathon安装配备

 

1)安装mesos-master&marathon

# 添加mesosphere repository,根据github mesosphere社区版获取最新repository
[root@master-node1 ~]# cd /usr/local/src/
[root@master-node1 src]# wget http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm
[root@master-node1 src]# rpm -ivh mesosphere-el-repo-7-3.noarch.rpm
[root@master-node1 src]# yum install mesos marathon -y

安glance遇到的题目:

2)mesos-master&marathon关联zookeeper

[root@master-node1 src]# cd ~

#mesos-master选主;
#完全替换默认配置
[root@master-node1 ~]# vim /etc/mesos/zk
zk://10.11.4.156:2181,10.11.4.157:2181,10.11.4.158:2181/mesos

#marathon选主;
#默认marathon无相关配置目录/文件
[root@master-node1 ~]# mkdir -p /etc/marathon/conf/
[root@master-node1 ~]# vim /etc/marathon/conf/zk
zk://10.11.4.156:2181,10.11.4.157:2181,10.11.4.158:2181/marathon 

1.安排cinder时如果把cinder
volumes上的布局文件中volumes_dir=$state_path/volumes
改为volumes_dir=/etc/cinder/volumes
2.将/etc/rc.d/init.d/openstack-cinder-volume
中的配置文件才保留–config-file $config,删除-config-file
$distconfig,避免失误
eg: daemon –user cinder –pidfile $pidfile “$exec –config-file $config
–logfile $logfile &>/dev/null & echo \$! > $pidfile”
3.cinder voleme节点配置文件被volume_group =
stack-volumes-lvmdriver-1件表示默认vg为stack-volumes-lvmdriver,启动cinder
volume前要优先创造名吧stack-volumes-lvmdriver的卷组。

3)marathon连接mesos-master

#默认marathon无相关配置master文件
[root@master-node1 ~]# vim /etc/marathon/conf/master
zk://10.11.4.156:2181,10.11.4.157:2181,10.11.4.158:2181/mesos 

除去neutron网络的步调:
1.router-gateway-clear
2.router-interface-delete
3.subnet-delete
4.router-delete

4)mesos-master配置quorum&work_dir

#quorum设置为整数,且大于master节点数的1/2
[root@master-node1 ~]# echo "2" > /etc/mesos-master/quorum

#work_dir也在/etc/mesos-master/目录下,保持默认值即可
[root@master-node1 ~]# cat /etc/mesos-master/work_dir 
/var/lib/mesos 

neutron服务遇到的题目:

5)mesos-master&marathon配置ip&hostname

#hostname直接配置的本机ip,是为了防止出现dns无法解析的问题;
#其余两个节点也配置本机地址即可
[root@master-node1 ~]# echo "10.11.4.156" > /etc/mesos-master/ip
[root@master-node1 ~]# echo "10.11.4.156" > /etc/mesos-master/hostname

#marathon配置hostname;
#其余两个节点也配置本机地址即可
[root@master-node1 ~]# echo "10.11.4.156" > /etc/marathon/conf/hostname

#修改hosts
[root@master-node1 ~]# echo "10.11.4.156 master-node1" >> /etc/hosts

一经日志不报错但服务不健康,例如实例不克获到p。

6)开机启动

[root@master-node1 ~]# systemctl enable mesos-master marathon
[root@master-node1 ~]# systemctl disable mesos-slave
[root@master-node1 ~]# systemctl start mesos-master marathon

1.用neutron agent-list 查看各个组件工作状态是不是健康。

3. 设置iptables

# tcp2181,2888,3888与zookeeper相关;
# tcp5050是mesos-master的访问端口;tcp5051是mesos-slave的访问端口;
# tcp8080是marathon的访问端口。
[root@master-node1 ~]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5050 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 5051 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

[root@master-node1 ~]# service iptables restart

设若状态不正常请查看各个节点时间是否非齐。(日志不报错,但状态不正规基本上都是时刻未同台造成的)

三.Slave节点

盖slave-node1为例,slave-node2/node3配置根据环境微调。

二、总结

1. docker安装配置

[root@slave-node1 ~]# yum remove docker docker-common docker-selinux docker-engine

#镜像驱动使用device-mapper
[root@slave-node1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

#添加repository
[root@slave-node1 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@slave-node1 ~]# yum makecache fast

[root@slave-node1 ~]# yum install docker-ce -y

#配置mirror
[root@slave-node1 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxxxxxxx.m.daocloud.io

#安装brctl,方便查看bridge 
[root@slave-node1 ~]# yum install bridge-utils-1.5-9.el7.x86_64 -y

#开机启动
[root@slave-node1 ~]# systemctl enable docker
[root@slave-node1 ~]# systemctl start docker

①遇到题目势必要是冷静,不要放弃,要善用思考。

2. mesos-slave安装配置

②openstack的问题一般都是布文件漏洞百出引起的

1)安装mesos-slave

[root@slave-node1 ~]# cd /usr/local/src/
[root@slave-node1 src]# wget http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm
[root@slave-node1 src]# rpm -ivh mesosphere-el-repo-7-3.noarch.rpm
[root@slave-node1 src]# yum install mesos -y

③尽量将劳动多再次开几坏看是否会面报错,有些服务虽然起步的时刻显得的ok,但是尚未启动起来。

2)mesos-slave关联zookeeper

[root@slave-node1 src]# cd ~

#完全替换默认配置
[root@slave-node1 ~]# vim /etc/mesos/zk
zk://10.11.4.156:2181,10.11.4.157:2181,10.11.4.158:2181/mesos

④劳动启动后自然要扣押日志(grep -i ‘error’)

3)配置marathon调用mesos运行docker

[root@slave-node1 src]# cd ~
[root@slave-node1 ~]# echo "docker,mesos" > /etc/mesos-slave/containerizers

⑤列主机时间得联合

4)mesos-slave配置ip&hostname

#其余两个节点也配置本机地址即可
[root@slave-node1 ~]# echo "10.11.4.146" > /etc/mesos-slave/ip
[root@slave-node1 ~]# echo "10.11.4.146" > /etc/mesos-slave/hostname

#修改hosts
[root@master-node1 ~]# echo "10.11.4.146 slave-node1" >> /etc/hosts

 

5)开机启动

[root@slave-node1 ~]# systemctl enable mesos-slave
[root@slave-node1 ~]# systemctl disable mesos-master
[root@slave-node1 ~]# systemctl start mesos-slave

屈居一张成后底美图:

3. 设置iptables

# tcp5051是mesos-slave的访问端口。
[root@slave-node1 ~]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5051 -j ACCEPT

[root@slave-node1 ~]# service iptables restart

# iptabes重启后重新加载配置文件中的配置,默认配置中没有docker0网桥的nat表规则;
#重启docker将相关规则加载到iptables中,再保存规则到配置文件中;
#如果iptables中没有docker0网桥的nat表规则,在创建带有端口映射的容器时,会报错:"ExitCode": 128,iptables相关规则不能创建
[root@slave-node1 ~]# systemctl restart docker
[root@slave-node1 ~]# service iptables save

葡京国际平台 2

四.验证

 

1. mesos

登陆mesos
web:http://10.11.4.156:5050

#登陆10.11.4.157/158还可以,通过zookeeper选主,登陆任一地址都见面越反到leader页面。

1)mesos-homepage

  • (1).
    从首页可以见到mesos-master的leader是:10.11.4.157;

  • (2). mesos-agent:activated状态的agent有3个;

  • (3). mesos-master管理的3单agent的资源已汇总。

葡京国际平台 3

2)mesos-Frameworks

  • (1). 在mesos框架中,marathon框架已经于辨认,marathon的leader是:10.11.4.157;
  • (2). 虽然mesos-master与marathon的leader相同,但双方的leader是zookeeper独立选举的,并从未直接涉及,是可不同之。

葡京国际平台 4

3)mesos-Agents

  • (1). 在Agnets中会顾3独agent;
  • (2). 同时能够观看每个agent的资源;

葡京国际平台 5

  • (3). 点击任一agent
    id,能见到重复详实的agent信息。

葡京国际平台 6

4)mesos state

浏览器访问:http://10.11.4.158:5050/master/state

2. marathon

登陆marathon
web:http://10.11.4.156:8080

#要么点击mesos-frameworks页面中,已经选举产生底marathon
leader;

#登陆10.11.4.157/158还可以,通过zookeeper选主,登陆任一地址都见面越反到leader页面。

1)marathon-homepage

  • (1). 在首页中点击右侧上斗问号,选择”About”;

葡京国际平台 7

  • (2). marathon-leader:10.11.4.157:8080;
  • (3). marathon连接到mesos
    leader:10.11.4.157:5050。

葡京国际平台 8

3. marathon下发应用

1)API方式

#marathon是有api接口的,通过api的方式可调用marathon执行相关应用调度的请求
#在marathon服务所在节点创建json文件;
#以下json文件中的注释需去掉。
[root@master-node1 ~]# vim nginx.json
{
  "id":"nginx1",                                 #容器名,只在marathon生效
  "cpus":0.2,                                    #cpu用量
  "mem":20.0,                                    #mem用量
  "instances": 1,                                #容器数量
  "constraints": [["hostname", "UNIQUE",""]],    #限制
  "container": {
  "type":"DOCKER",                               #应用类型
  "docker": {                                    #docker具体配置
     "image": "nginx",                           #采用的image
     "network": "BRIDGE",                        #网络模式
     "portMappings": [
        {"containerPort": 80, "hostPort": 0,"servicePort": 0, "protocol": "tcp" }
      ]                                          #端口映射,”0”表示任意端口,"servicePort"服务端口
    }
  }
}

#调用json文件
[root@master-node1 ~]# curl -X POST http://10.11.4.156:8080/v2/apps -d @/root/nginx.json -H "Content-type: application/json" 
  • (1). 登陆marathon,查看下已下成功,处于”Running”状态;容器的资源配置遵从json文件被的装;针对利用,点击最右面的”…”按钮,可进行相关操作;

葡京国际平台 9

  • (2). 点击应用名叫或状态,查看下具体信息,可查及者采取下发到slave节点:10.11.4.147,且映射主机的31896端口;同时可查”stderr”与”stdout”日志等(也可到mesos任务的”Sandbox”中查阅下载);

葡京国际平台 10

  • (3). Configuration标签下,列有了变化的器皿的连带部署,除json文件预设置的参数外,还有json文件被定义之”任意值”也起矣明确的安排;同时可以”Edit”;

葡京国际平台 11

  • (4). 在slave节点:10.11.4.147产查看容器;
    [root@slave-node2 ~]# docker ps

葡京国际平台 12

  • (5). web访问:http://10.11.4.147:31896

葡京国际平台 13

  • (6). 登陆mesos,”Active
    Tasks”有处运行状态的任务。

葡京国际平台 14

2)通过marathon web页面手工创建

  • (1). 点击marathon首页右上较量的”Create
    Application”,选择”JSON
    Mode”,粘帖相关json配置,实质上立也是以调用marathon的api接口,只是输入变为web页面;

葡京国际平台 15

  • (2). 取消”JSON
    Mode”,可以见见粘帖的json配置都于记录下来;也堪直接当不”JSON
    Mode”填写有关安排。

葡京国际平台 16

葡京国际平台 17

葡京国际平台 18