当面对KVM集群的时候,我们对KVM的管理以及宿主机的管理就会遇到很大的难度,例如:
查看每一个宿主机有多少台KVM虚拟机?
查看每一个宿主机资源信息,每一个KVM虚拟机资源信息?查看每一台宿主机配置信息,每一个KVM虚拟机的配置信息查看每一台宿主机IP地址,每一个KVM虚拟机的IP地址?
OpenStack是带计费功能的kvm管理平台,IaaS层自动化管理kvm宿主机,云主机定制化操作。
OpenStack是一个开源的虚拟化编排平台,提供了基础设施即服务(IaaS)的解决方案,帮助服务商和企业内部实现类似于 Amazon EC2 和阿里云的ECS的云基础架构服务(Infrastructure as a Service, IaaS)。
OpenStack核心组件
计算服务Nova:负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作。
镜像服务Glance:负责虚拟机镜像管理,例如:上传镜像、删除镜像、编辑镜像基本信息的功能。
身份服务Keystone:为OpenStack其他组件通讯时提供身份验证服务。
(例如nova去调用镜像按照虚拟机系统,就需要keystone的介入,获得身份,同样glance去联系nova提供镜像需求也会通过keystone去获得身份访问)
网络&地址管理Neutron:提供网络虚拟化技术,为OpenStack其他服务提供网络连接服务,为用户提供网络接口。
块存储 Cinder:为运行实例提供稳定的数据块存储服务。
(例如:创建卷、删除卷,在实例上挂载和卸载卷)
UI 界面 Horizon:OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作。
(例如:启动实例、分配IP地址、配置访问控制等)
基础环境介绍
需要两个节点,分别为:controller控制节点;compute计算节点
主机名 |
IP地址 |
网络模式 |
硬件配置 |
controller |
ens32: 192.168.0.50 |
管理网络: NAT |
2C,6G内存,50G 硬盘 |
ens34:不需要配置IP |
提供商网络: NAT |
||
compute01 |
ens32: 192.168.0.51 |
管理网络: NAT |
2C,4G内存,50G 硬盘 |
ens34:不需要配置IP |
提供商网络: NAT |
上面环境通过OpenStack官方文档建议的最小配置来设置的
controller 控制节点:上面会安装很多的软件启动很多的服务,数据库都也在上面,内存可以给多点;
compute计算节点:主要是用来提供硬件资源,启动虚拟机的,他本身运行的服务有nova和neutron,所以在搭建过程中不需要给太大;
根据官方文档中的介绍,所有节点都需要访问互联网,用于安装软件包、安全更新、DNS和NTP,提供商网络不需要配置IP地址,用于给 neutron服务使用。
两台服务器分别添加第二块网卡:
无需设置IP,这个后续是租户使用,用来个性化其公司内部环境;
VMware环境需要在虚拟机开启cpu虚拟化。
# cat /etc/hosts
192.168.0.50 controller
192.168.0.51 compute01
OpenStack的节点时间是需要进行同步的,但是我使用的是两台机器,而且都是可以进行联网的,完全可以都通过网络源来进行时间同步;
建议将controller和网络源同步时间,然后compute和controller同步时间。
vim /etc/chrony.conf
#...
27 allow 192.168.0.0/24
#配置允许访问的客户端列表
31 local stratum 10
#本地的优先级
查看时间同步并设置开机启动:
systemctl restart chronyd
chronyc sources -v
vim /etc/chrony.conf
...
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server controller iburst
启动服务并查看时间同步:
systemctl restart chronyd
chronyc sources -v
rm -rf /etc/yum.repos.d/epel.repo
OpenStack目前可用的版本有P、Q、R、S、T、U、V、W、X、Y,如果想要安装U版本及U版往后的版本,要求CentOS/RHEL在8版本以上才可以。
本实验使用T版本的OpenStack部署,T版作为CentOS/EHEL7可以使用的最高版本,后续也不需要考虑版本升级的问题。
#下载T版本的OpenStack仓库
yum -y install centos-release-openstack-train
#安装RDO仓库RPM来启用OpenStack仓库
yum -y install https://rdoproject.org/repos/rdorelease.rpm
#安装客户端工具
yum -y install python-openstackclient
在OpenStack环境中使用mysql数据库来存储各个服务的基础数据,因为
mysql已经商用默认源中是没有他的软件包,所以使用mariadb。
参考地址:https://docs.openstack.org/zh_CN/install-guide/environme nt-sql-database-rdo.html
yum -y install mariadb mariadb-server python2-PyMySQL
创建配置文件,并将bind-Address的地址设置为本机管理网络IP地址
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.0.50
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
设置开机自动启动并启动服务查看状态
systemctl enable mariadb.service && systemctl start
mariadb.service
#对数据库进行初始化操作
mysql_secure_installation
输入root密码:——》[回车]
是否设置root密码?——》[y]
直接设置root密码——》[123456]
是否删除匿名用户?——》[y]
不允许root用户远程登录?——》[y]
是否删除测试数据库?——》[y]
是否重新加载授权表?——》[y]
在OpenStack中,因为控制节点、计算节点、存储节点,相互之间是需要进行通信的,通信的时候需要借用些消息的传递,rabbitMQ就是为他们提供消息的传递,节点之间传递消息的时候会存放到rabbitMQ中,其他节点再到rabbitMQ中调取消息。
无法正常执行命令的时候,可以尝试重启下rabbitMQ服务
yum -y install rabbitmq-server
设置开机启动并启动服务
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service
对于rabbitMQ的配置就是创建一个OpenStack用户设置好权限,这里为了好记密码设置的是123,后面创建OpenStack所有服务的时候,密码也都是123
rabbitmqctl add_user openstack 123
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
在OpenStack环境中keystone服务颁布的令牌就是使用memcache来缓存的,也就是缓存用户的验证信息。
yum -y install memcached python-memcached
vim /etc/sysconfig/memcached
PORT="11211"USER="memcached"MAXCONN="1024"CACHESIZE="64"OPTIONS="-l 127.0.0.1,::1,controller #已做域名解析
设置开机启动并启动服务
systemctl enable memcached.service && systemctl start memcached.service
通过配置文件可以知道它开启的是11211端口
netstat -ntlp | grep 11211
yum -y install etcd
vi /etc/etcd/etcd.conf
#[Member]ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"ETCD_NAME="controller"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_CLUSTER_STATE="new"
sed -i 's/10.0.0.11/192.168.0.50/g' /etc/etcd/etcd.conf
设置开机启动并启动服务
systemctl enable etcd && systemctl start etcd
netstat -ntlp | egrep '2379|2380'
systemctl is-active chronyd mariadb.service rabbitmq-server.service memcached.service etcd.service