云平台部署与管理
openstack 私有云
docker 弹性云
公有云
大型架构配置
ansible
ELK
hadoop
云计算简介
什么是云计算
- 基于互联网的相关服务的增加、使用和交付模式
- 这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池
- 这些资源能够被快速提供,只需投入很少的管理工作, 或与服务供应商进行很少的交互
- 通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源
IaaS
- Iaas( Infrastructure as Service),即基础设施即服务
- 提供给消费者的服务是对所有计算基础设施的利用, 包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序
- IaaS通常分为三种用法:公有云、私有云和混合云
PaaS
- PaaS( Platform-as-a-Service),意思是平台即服务
- 以服务器平台或者开发环境作为服务进行提供就成为了PaaS
- PaaS运营商所需提供的服务,不仅仅是单纯的基础平台,还针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务
- 简单地说,PaaS平台是指云环境中的应用基础设施 服务,也可以说是中间件即服务
SaaS
- SaaS(Software-as-a-Service)软件即服务,是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务
- 用户不用再购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动,不用对软件进行维护,提供商会全权管理和维护软件,同时也提供软件的离线操作和本地数据存储
Openstack简介
- OpenStack是一个由NASA(美国国家航空航天局) 和Rackspace合作研发并发起的项目
- OpenStack是一套IaaS解决方案
- OpenStack是一个开源的云计算管理平台
- 以 Apache许可证为授权
openstack结构
Openstack主要组件
-
Horizon
- 用于管理 Openstack各种服务的、基于web的管理接口
- 通过图形界面实现创建用户、管理网络、启动实例等操作
-
Glance 管理镜像
- 扮演虚拟机镜像注册的角色
- 允许用户为直接存储拷贝服务器镜像
- 这些镜像可以用于新建虚拟机的模板
-
Nova 管理虚拟机
- 在节点上用于管理虚拟机的服务
- Nova是一个分布式的服务,能够与 Keystone交互实现认证,与 Glance交互实现镜像管理
- Nova被设计成在标准硬件上能够进行水平扩展
- 启动实例时,如果有则需要下载镜像
-
Swift 存储云组件,对象存储
-
Neutron 网络组件(最复杂)
- 一种软件定义网络服务
- 用于创建网络、子网、路由器、管理浮动IP地址
- 可以实现虚拟交换机、虚拟路由器
- 可用于在项目中创建VPN
-
Cinder 存储卷
- 经常应用在实例存储环境中,如数据库文件
- 为虚拟机管理存储卷的服务
- 为运行在Nova中的实例提供永久的块存储
- 可以通过快照进行数据备份
-
Keystone 集中式的认证和授权
- 为用户和其他服务提供了SSO认证服务
- 为其他服务提供认证和授权的集中身份管理服务
- 也提供了集中的目录服务
- 支持多种身份认证模式,如密码认证、令牌认证、以及Aws(亚马逊Web服务)登陆
部署安装环境
- 虚拟机配置4台
角色 | 主机名 | IP地址 | 内存 | CPU核心数 | 硬盘容量 |
---|---|---|---|---|---|
yum服务器 | yum | 192.168.1.100 | 1G | 2 | 20G |
openstack管理节点 | openstackmgm | 192.168.1.10 | 8G | 2 | 50G |
nova01 | nova01 | 192.168.1.11 | 3G | 2 | 100G |
nova02 | nova02 | 192.168.1.12 | 3G | 2 | 100G |
- 所有虚拟机的firewalld/NetworkManager必须
关闭
,SELinux设置为disabled
1)配置yum服务器
yum -y install httpd
cd /var/www/html/
mkdir openstack extras centos-1804
mount -t iso9660 -o ro,loop /iso/CentOS-7-x86_64-DVD-1804.iso centos-1804
mount -t iso9660 -o ro,loop /iso/RHEL7-extras.iso extras
mount -t iso9660 -o ro,loop /iso/RHEL7OSP-10.iso openstack
systemctl start httpd
lftp http://192.168.1.100/extras # 查看是否成功
> ls
2)配置ntp时间同步
服务器:yum
] yum -y install chrony
] vim /etc/chrony.conf
bindacqaddress 0.0.0.0
allow 0/0
] systemctl restart chronyd
客户端:openstack_manager/nova01/nova02
] yum -y install chrony
] vim /etc/chrony.conf
server 192.168.1.100 iburst
] rsync -av /etc/chrony.conf 192.168.1.11:/etc/chrony.conf
] rsync -av /etc/chrony.conf 192.168.1.12:/etc/chrony.conf
] systemctl restart chronyd
] chronyc sources -v # 检查
^* 192.168.1.100 2 6 377 51 -37us[ -51us] +/- 10ms # 出现*表示服务可用
3)配置DNS
所有机器相同配置
] vim /etc/resolv.conf
# 需要虚拟机可以上网
nameserver 8.8.8.8
# 去掉search开头的行
] vim /etc/hosts
192.168.1.10 openstackmgm
192.168.1.11 nova01
192.168.1.12 nova02
4)配置yum源
vim /etc/yum.repos.d/openstack.repo
[openstack]
baseurl=http://192.168.1.100/openstack/rhel-7-server-openstack-10-rpms
gpgcheck=0
enabled=1
name=rhel openstack rpm
[openstack-tools]
baseurl=http://192.168.1.100/openstack/rhel-7-server-openstack-10-devtools-rpms
gpgcheck=0
enabled=1
name=rhel openstack devtools
[extrasrpm]
baseurl=http://192.168.1.100/extras/
gpgcheck=0
enabled=1
name=extras rpm
rsync -av /etc/yum.repos.d/openstack.repo nova01:/etc/yum.repos.d/
rsync -av /etc/yum.repos.d/openstack.repo nova02:/etc/yum.repos.d/
yum makecache
yum repolist
部署Openstack
1)依赖软件包安装
openstackmgm:
yum -y install python-setuptools openstack-packstack
nova01/nova02:
yum -y install qemu-kvm libvirt-daemon libvirt-daemon-driver-qemu libvirt-client python-setuptools
python-setuptools # python工具包
openstack-packstack # openstack安装脚本
qemu-kvm # kvm虚拟化模块,启动虚拟机的底层硬件仿真工具
libvirt-daemon # 给用户提供管理虚拟化工具
libvirt-daemon-drive-qemu # 管理驱动
libvirt-client # 客户端命令行程序
2)检查基础环境
- 是否卸载firewalld和NetworkManager
yum remove -y firewalld-*
systemctl mask NetworkManager # 禁止服务启动
systemctl unmask xxx # 取消禁止
- 检查配置主机网络参数
不用NetworkManager修改网卡参数
vim /etc/sysconfig/network-scripits/ifcfg-xxxxx
systemctl start network
- 主机名必须能够解析 /etc/hosts
- 检查配置主机yum源
- 依赖软件包是否安装
- 检查NTP服务器是否可用
- 检查/etc/resolv.conf不能有search开头的行
- 检查SELinux是否禁用
- 阿-里-云 环境练习,安装前执行
pip uninstall urllib3
3)安装Openstack
] packstack --gen-answer-file=answer.ini # 创建应答文件
] vim answer.ini
42 CONFIG_SWIFT_INSTALL=n #不安装swift模块
45 CONFIG_CEILOMETER_INSTALL=n #计费相关模块
49 CONFIG_AODH_INSTALL=n #计费相关模块
53 CONFIG_GNOCCHI_INSTALL=n #计费相关模块
75 CONFIG_NTP_SERVERS=192.168.1.100 #时间服务器的地址
98 CONFIG_COMPUTE_HOSTS=192.168.1.11 #计算节点
102 CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11 #网络节点
333 CONFIG_KEYSTONE_ADMIN_PW=a #修改管理员的密码
840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan #驱动类型,flat直连连接,vxlan为可划分数量极多的vlan
876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5 #设置组播地址,最后一个随意不能为0和255,其他固定
910 CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex #物理网桥的名称
921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 #br-ex桥与eth0连接,管理eth0,网桥与哪个物理网卡连接
1179 CONFIG_PROVISION_DEMO=n #DEMO是否测试
] packstack --answer-file=answer.ini #执行应答文件
执行安装后,如果前期服务准备无误,等待安装结束即可,根据主机配置不同,需要等待20分钟左右,如果出现错误,按输出的日志文件进行排错
4)网络配置
- 多计算节点的网络拓扑
- 查看外部OVS网桥
cat /etc/sysconfig/network-scripts/ifcfg-br-ex
- 查看外部OVS网桥端口
cat /etc/sysconfig/network-scripts/ifcfg-eth0
- 验证OVS配置
ovs-vsctl show
Openstack操作基础
1)Horizon配置
- Horizon是一个用以管理、控制 OpenStack服务的Web控制面板,也称之为Dashboard仪表盘
- 可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
- 基于python的django web框架进行开发
功能与特点
实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等
偏好设定:对虚拟硬件模板可以进行不同偏好设定
镜像管理:编辑或删除镜像
用户管理:创建用户等
卷管理:创建卷和快照
对象存储处理:创建、删除容器和对象
Horizon BUG处理
[root@openstack ~] cd /etc/httpd/conf.d/
[root@openstack conf.d] vim 15-horizon_vhost.conf
36 WSGIApplicationGroup %{GLOBAL} #添加这一行
[root@openstack conf.d] systemctl restart httpd
2)登录管理
- web访问openstack服务器
firefox 192.168.1.10/dashboard
访问dashboard报404解决办法
cd /etc/httpd/conf.d/
mv 15-default.conf 15-default.conf.bak
systemctl restart httpd
- 命令行接口
[root@openstack ~] ls
answer.ini keystonerc_admin #keystonerc_admin生成的文件,里面有用户名和密码
[root@openstack ~] cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin #用户名,假如修改了用户名和密码,则使用命令行登录时需要修改此文件
export OS_PASSWORD=a #密码
export OS_AUTH_URL=http://192.168.1.10:5000/v2.0
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne
[root@openstack ~] source keystonerc_admin
[root@openstack ~(keystone_admin)] openstack #连接openstack
(openstack) help #查看帮助