赞
踩
openstack概述
openstack的作用
openstack版本命名规则
openstack各组件关系
Kolla概述和openstack所有结点linux系统初始配置
安装kolla-ansible
自定义kolla-ansible安装openstack的相关配置文件
开始基于kolla-ansible安装openstack私有云
openstack概述 :OpenStack是一个NASA美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。
Open是开放,Stack则是堆砌之意,合起来就是将众多的功能服务堆积起来的集合,让人们通过Openstack云计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设与管理软件中的优秀开源项目。
openstack的作用:OpenStack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端。
1、IaaS(Infrastructure as a Service),即基础设施即服务。
消费者通过Internet 可以从完善的计算机基础设施获得服务。这类服务称为基础设施即服务。基于 Internet 的服务(如存储和数据库)是 IaaS的一部分。比如:在腾讯云上买一台云主机(8个CPU,32G,5T硬盘云主机等)
2、PaaS是Platform-as-a-Service的缩写,意思是开发平台即服务。 把服务器平台作为一种服务提供的商业模式。比如:OpenShift是红帽的云开发平台即服务(PaaS)。
OpenShift是自由和开放源码的云计算平台,它可以使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。
例2:新浪的SAE PaaS云平台,国内:http://www.sinacloud.com/sae.html
PaaS 的 4大特点:
注:Iaas干了硬件工程师的活,paas干了运维的活
3、SaaS是Software-as-a-Service(软件即服务)的简称。
例:https://yiqixie.com中国的一起写,多人编辑一个word或execle。国外:docs.google.com或 微软的office365
注:有SaaS平台, 不需要运维,不需要开发。
要求:你越来越专业!
总结:
三种云平台架构: IAAS ,PAAS ,SAAS都是不同的商业模式。
按拥有者分类:公有云(Public Cloud)、私有云(Private Cloud)、混合云(Hybrid Cloud)
按照技术厂商分类:VMware vSphere、微软云计算解决方案、亚马逊AWS、OpenStack等
注:国内云平台使用opensctack二次开发比较多。
Openstack命名方式版本发布以A-Z字母顺序来发布,很好记。
例:
2010年10月 发布‘Austin’
2011年2月 发布‘Bexar’ [地名] [美国] 贝尔;
2011年4月 发布‘Cactus’ [地名] [美国] 卡克特斯;
2011年7月 发布‘Diablo’
2012年4月 发布‘Essex’
2012年10月 发布‘Folsom’
2013年4月 发布‘Grizzly’
互动:如果到了Z以后,AA。。。 AB。。
磁盘起名到sdz后,sda。。。。sdz -》 sdaa 。。sdab
Keystone(身份认证)
Nova(计算)
Neutron(网络)
Glance(镜像存储)
Cinder(块存储)
Swift(对象存储)
Horizon(web UI界面)
Ceilometer(计量)
Heat(部署编排)
Trove(数据库)
下面详细说明:
身份认证(Keystone):统一的授权、认证管理。所有组件都依赖于Keystone提供3A(Account, Authentication, Authorization)服务。
例1: 3A认证
1、认证(Authentication),验证用户的身份与可使用的网络服务;
2、授权(Authorization):依据认证结果开放网络服务给用户;
3、计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。整个系统在网络管理与安全问题中十分有效。
比如:宽带收费就是3A认证的典型例子:输入帐号密码(认证)->开10M带宽(授权)->在营业厅(计帐)
计算管理(Nova):Nova是OpenStack云中的计算组织控制器。Nova自身并没有提供任何虚拟化能力,相反它使用libvirt API来与被支持的虚拟技术Hypervisors交互。如:kvm、Xen、VMware等虚拟化技术。
Neutron(网络):实现虚拟机的网络资源管理如网络连接、ip管理、公网映射
镜像管理(Glance):主要存储和管理系统镜像。centos镜像
块存储(Cinder):为虚拟机提供存储空间。 比如硬盘,分区,目前支持ip-san、fc-san等。
对象存储(Swift):OpenStack Swift 开源项目提供了弹性可伸缩、高可用的分布式对象存储服务适合存储大规模非结构化数据。通过key/value的方式实现对文件的存储,现在的云盘就是这样的,和MFS,HDFS类似
注:如果客户需要一个1000T的存储空间,使用Cinder或Glance就不行,效率太低。这时就用Swift。
界面(Horizon):安装好后,openstack的web界面控制台DashBoard
Ceilometer(计量):Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
Ceilometer [sɪ’lɒmɪtə] 云幂测量仪
Heat(部署编排):是一个编排引擎,它可以基于文本文件形式的模板启动多个复合云应用程序(这些文件可以被视为代码)。简单来说,Heat为OpenStack用户提供了一种自动创建云组件(如网络、实例、存储设备等)的方法。
[hɪt]
Trove(数据库):为关系型数据库和非关系型数据库引擎提供可扩展的和可靠的云数据库服务,并继续改进其功能齐全、可扩展的开源框架。
Trove [trəʊv] 宝库
Local模式:一般测试时使用,只需一台物理机即可。
GRE模式:隧道模式, VLAN数量没有限制,性能有点问题。
Vlan模式:vlan数量有4096的限制
VXlan模式:vlan数量没有限制,性能比GRE好。
Flat模式:管理员创建租户直接到外网,不需要NAT。
扩展:VXLAN概述
VXLAN是由思科与VMware提出的。
LAN 局域网
VLAN 虚拟局域网
VXLAN 虚拟扩展局域网
VXLAN (Virtual Extensible LAN,虚拟扩展局域网) 它是一种在UDP中封装MAC的简单机制,可以创建跨多个物理IP子网的虚拟2层子网
比如: 我在北京,你在上海,通过vxlan技术,可以让我们在同一个局域网中。 (有点vpn隧道)
为什么我们需要这种新技术?现在不只一种标准可以在IP中封装MAC(包括EtherIP和GRE通道桥接),但是它们都无法做到VLAN逻辑标记,因此您只能使用最多4096个不同的VLAN。即使可以使用这些标准来分隔逻辑网,您也必须(在负载中)深入分析MAC头信息,以查找出虚拟分片ID。而VXLAN通过一个24位分片ID,在一个数据中心内它能部署百万个虚拟网。而且,VXLAN数据包格式很容易在硬件中实现,所以它以后也许可以更紧密地与物理网络设备集成。
何时需要VXLAN?在需要大量逻辑网时,才应该考虑使用VXLAN。如果只有少量逻辑网,那么就还是应该使用经过时间考验的技术,如VLAN。 你的逻辑网不超过4096个,都用VLAN。
VXLAN硬件产品:H3C S6800数据中心以太网汇聚交换机
H3C S6800系列交换机支持VXLAN (Virtual Extensible LAN,虚拟扩展局域网), VXLAN通过将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC作为outer-header封装后在物理IP网上传输,到达目的地后由隧道终结点解封并将数据发送给目标虚拟机,解决了地理分散的数据中心之间远距离虚拟机迁移问题。
VLAN与VXLAN之间有何区别:VXLAN显然更具可扩展性(4,096个VLAN网 vs 1600万个VXLAN网)
社区手册
http://docs.openstack.org
RDO
https://www.rdoproject.org(http://openstack.redhat.com)
RedHat Enterprise Linux OpenStack Platform (E210 考试)
http://www.redhat.com/en/technologies/linux-platforms/openstack-platform
Mirantis(Fuel)
https://www.mirantis.com
高级定制
Puppet、Chef
kolla 基于docker安装openstack,openstack每个组件做成docker实例
kolla是openstack下面用于自动化部署的一个项目,它基于docker和ansible来实现,docker主要负责镜像制作,容器管理。而ansible主要负责环境的部署和管理。
Kolla实际上是分为两大块的,一部分,Kolla提供了生产环境级别的镜像,涵盖了Openstack用到的各个服务,另一部分是自动化的部署,也就是上面说的ansible部分。最开始两个部分是在一个项目中的(也就是Kolla),从O版本开始将两个部分独立开来,Kolla项目用来构建所有服务的镜像,Kolla-ansible用来执行自动化部署。
[root@test63 ~]# vim /etc/selinux/config #关闭Selinux和防火墙 SELINUX=disabled [root@test63 ~]# reboot #如果原来的系统开着selinux,那么需要重启,才能关闭selinux [root@test63 ~]# systemctl stop firewalld #关闭Firewalld [root@test63 ~]# systemctl disable firewalld [root@test63 ~]# systemctl status firewalld [root@test63 ~]# mv /opt/CentOS-* /etc/yum.repos.d/ #安装 Epel源 [root@test63 ~]# yum install epel-release -y [root@test63 ~]# cat /etc/hostname#配置 Hostname test63.cn [root@test63 ~]# cat /etc/hosts #配置/etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.63 test63.cn test63 [root@test63 ~]# yum install ntp #同步时间 [root@test63 ~]# systemctl enable ntpd.service [root@test63 ~]# systemctl start ntpd.service [root@test63 ~]# mkdir ~/.pip #配置 pip 镜像源,方便快速下载python库(这一步很重要),因为openstack主要是基于python做的 [root@test63 ~]# vim ~/.pip/pip.conf #写入下以内容 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
在test63上添加一个新的网卡,类型是bridge模式
注:如果在服务器直接安装,两块网卡的IP,就算是同一个网段或者不同网段都可以的。
生成ens38的网卡配置文件
[root@test63 ~]#cd /etc/sysconfig/network-scripts/
[root@test63 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@test63 network-scripts]# vim ifcfg-ens38
TYPE="Ethernet"
BOOTPROTO="none"
NAME="ens38"
DEVICE="ens38"
ONBOOT="yes"
[root@test63 network-scripts]# vim ifcfg-ens33 #检查一下ens33网卡配置文件,发现在新添加网卡,重启系统后,启动协议变了,现在改回来。
改:BOOTPROTO="dhcp"
为:BOOTPROTO="none"
[root@test63 network-scripts]# service network restart
[root@test63 ~]# yum install python-devel libffi-devel gcc openssl-devel git python-pip –y #安装基础包
[root@test63 ~]# pip install -U pip #升级一下pip,不然后,后期安装会报警告
[root@test63 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 #安装必要的一些系统工具
[root@test63 ~]# systemctl stop libvirtd.service && systemctl disable libvirtd.service && systemctl status libvirtd.service #添加docker yum源并安装docker
[root@test63 ~]# yum remove docker docker-io docker-selinux python-docker-py #如果有的话,卸载旧的Docker,否则可能会不兼容
[root@test63 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加docker-ce yum源配置文件并安装docker,会自动添加yum源文件
[root@test63 ~]# cat /etc/yum.repos.d/docker-ce.repo #查看新生成的yum源配置文件
[root@test63 ~]# yum -y install docker-ce #咱们在线安装的是docker-ce-18.06.0.ce 版本, Docker-CE社区版本
[root@test63 ~]# systemctl start docker && systemctl enable docker && systemctl status docker #启动Docker服务
[root@test63 ~]# mkdir /etc/systemd/system/docker.service.d #设置docker volume卷挂载方式
[root@test63 ~]# tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
注:加上MountFlags=shared后,当docker宿主机新增分区时,docker服务不用重启。如果不加docker服务服务重启,docker中的实例才可以使用新加的磁盘或分区。 添加这个参数后,后期在openstack中使用cinder存储服务时,新加磁盘比较方便。
很重要,不然后期从国外下载docker镜像会直接报错,而且速度慢
[root@test63 ~]# mkdir /etc/docker/
[root@test63 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
}
注:如果需要使用自己的本地私有仓库,写成如下
{
"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
"insecure-registries": ["192.168.1.63:4000"]
}
重启相关服务
[root@test63 ~]# systemctl daemon-reload #修改了启动脚本,需要执行
[root@test63 ~]# systemctl enable docker && systemctl restart docker && systemctl status docker
[root@test63 ~]# yum install ansible –y #安装 ansible
[root@test63 ~]# cd /root #安装kolla-ansible.下载kolla-ansible的代码.注:kolla-ansible可以实现使用ansible自动安装openstack
[root@test63 ~]# git clone http://git.trystack.cn/openstack/kolla-ansible -b stable/pike #下载pike版本的openstack
安装kolla-ansible需要依赖包
[root@test63 ~]# cd /root/kolla-ansible
[root@test63 kolla-ansible]# pip install . #这里.代表当前目录
复制kolla-ansible的相关配置文件
[root@test63 kolla-ansible]# cp -r etc/kolla /etc/kolla/
[root@test63 kolla-ansible]# cp ansible/inventory/* /etc/kolla/
[root@test63 kolla-ansible]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
注:all-in-one #安装单节点openstack的ansible自动安装配置文件
multinode #安装多节点openstack的ansible自动安装配置文件
globals.yml #openstack 部署的自定义配置文件
passwords.yml #openstack中各个服务的密码
修改虚拟机类型为qemu,注:如果是在虚拟机里装kolla,希望可以启动再启动虚拟机,那么你需要把virt_type=qemu,默认是kvm。如果vmware开了“虚拟化Intel VT”功能,就不用写这个了。
[root@test63 kolla-ansible]# mkdir -p /etc/kolla/config/nova
[root@test63 kolla-ansible]# cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF
1、自动生成openstack各服务的密码文件(注:这是登录Dashboard,admin使用的密码,你可以根据自己需要进行修改)
[root@test63 kolla-ansible]# kolla-genpwd
[root@test63 ~]# vim /etc/kolla/passwords.yml
改:158 keystone_admin_password: HsPbEQHxTqmewKYNoRPpIOyQNdEYpHy36OX67TG3
为:keystone_admin_password: 123456
2、编辑 /etc/kolla/globals.yml 自定义openstack中部署事项
[root@test63 ~]# vim /etc/kolla/globals.yml #配置openstack安装中的参数 改:15 #kolla_base_distro: "centos" #选择下载的镜像为基于centos版本的镜像 为: kolla_base_distro: "centos" 改:18 #kolla_install_type: "binary" #去了前面的#号,使用yum安装二进制包安装,源码安装,指的是使用git clone源码安装 为:18 kolla_install_type: "binary" 改:21 #openstack_release: "" 为:openstack_release: "pike" #指定安装pike版本的openstack,后期下载的openstack相关的docker镜像的tag标记也都为pike 23 # Location of configuration overrides 24 #node_custom_config: "/etc/kolla/config" #配置文件的位置 改:31 kolla_internal_vip_address: "10.10.10.254" 为:31 kolla_internal_vip_address: "192.168.1.63" # 我们没有启用高可用,所以这里的IP可以和ens33一样,也可以独立写一个和ens33同网段的IP。注:如果配置了高可用,这里要使用一个没被占用的IP。这个IP是搭建HA高可用的浮动IP。 此IP将由keepalived管理以提供高可用性,应设置为和network_interface ens33 同一个网段的地址。 改:73 #network_interface: "eth0" 为: network_interface: "ens33" # Kolla-Ansible需要设置一些网络选项。我们需要设置OpenStack使用的网络接口。设置的第一个接口是“network_interface”。这是openstack内部多个管理类型网络的默认接口。 改:101 #neutron_external_interface: "eth1" 为:101 neutron_external_interface: "ens38" #所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,取决于网络的创建方式。 此接口应在没有IP地址的情况下处于活动 如果不是,openstack云平台中的云主机实例将无法访问外部网络。 只要网卡启动着,就可以了,不要给IP,有IP时br-ex桥接就不成功了。 135 #enable_cinder: "no" #先不开启cinder 改:151 #enable_haproxy: "yes" 为:151 enable_haproxy: "no" #去了前面的#号,改yes为no。关闭高可用
生成SSH Key,并授信本节点
[root@test63 kolla]# ssh-keygen
[root@test63 kolla]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@test63
配置单节点清单文件(目前只有一个节点)
[root@test63 kolla]# vim /etc/kolla/all-in-one #把localhost替换成test63
:1,$s/localhost/test63/
:1,$s/ansible_connection=local//
注:将以下组件,都安装到test63这台机器上:改第1行到19行中。
[control]
test63
[network]
test63
[compute]
test63
[storage]
test63
。。。
[deployment]
test63
对主机进行预部署检查
[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks
注:我这里有最新显示78个ok,另外,现在还没有运行docker实例了,
拉取镜像
[root@test63 kolla]# kolla-ansible -i /etc/kolla/all-in-one pull #-i是指定主机清单
查看网络链接
[root@test63 ~]# netstat -antup | grep 443
tcp 0 385 192.168.1.63:34580 116.62.81.173:443 ESTABLISHED 42547/dockerd
发现在走的是阿里云的docker加速结点,下载的镜像。
[root@test63 ~]# docker images #查看下载到的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-binary-cron pike 659fa47c7d43 About an hour ago 455MB
。。。
[root@test63 ~]# docker images | wc -l #整个过程,会下载了32个镜像
32
最后进入实际的OpenStack部署
[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy #因为咱们前面已经下载的镜像,所以这时,安装会快一些。如果前面没有下载镜像,那么这时,还会边下载各种openstack相关的镜像边部署docker实例。
报错:
RUNNING HANDLER [common : Initializing toolbox container using normal user] ****
fatal: [test63]: FAILED! => {"changed": false, "cmd": ["docker", "exec", "-t", "kolla_toolbox", "/usr/bin/ansible", "--version"], "delta": "0:00:01.251727", "end": "2018-08-29 22:52:03.283733", "msg": "non-zero return code", "rc": 126, "start": "2018-08-29 22:52:02.032006", "stderr": "", "stderr_lines": [], "stdout": "OCI runtime exec failed: exec failed: container_linux.go:348:
解决:
[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy #再运行一下。就自行解决了
到此安装成功。
验证部署
[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy
这样就创建 /etc/kolla/admin-openrc.sh 文件
[root@test63 kolla]# ll /etc/kolla/admin-openrc.sh
-rw-r--r-- 1 root root 323 8月 10 17:58 /etc/kolla/admin-openrc.sh
[root@test63 kolla]# cat admin-openrc.sh #查看openstack初始化脚本的配置,如登录帐号
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456 #帐号和密码
测试:http://192.168.1.63 访问成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。