资源:
KVM环境:
controller控制节点和计算节点都需要: 双网卡
cpu 设置: 需要设置设置host-passthrough 模式
-
解析,三个节点都需要修改
每个节点都需要,时间同步服务chronyd服务,选择同步真机的时间。
真机配置文件的修改:
节点直接同步就行了chronyc sources -v
显示同步成功
控制节点
部署openstack源仓库
- 执行
yum upgrade
在主机上升级包
yum upgrade
- 安装 OpenStack 客户端:
yum install python-openstackclient
安装sql数据库:
- 安装软件包
yum install mariadb mariadb-server python2-PyMySQL
- 创建并编辑 /etc/my.cnf.d/openstack.cnf,然后完成如下动作:
- 启动数据库服务,并将其配置为开机自启:
systemctl enable --now mariadb.service
- 对数据库进行安全初始化处理:
mysql_secure_installation
消息队列
- 安装包
yum install rabbitmq-server
- 启动消息队列服务并将其配置为随系统启动
systemctl enable --now rabbitmq-server.service
- 添加 openstack 用户:
rabbitmqctl add_user openstack openstack
第二个openstack 是 openstack 用户的密码
- 给
openstack
用户配置写和读权限:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
可以选择打开rabbitmq的管理器
rabbitmq-plugins enable rabbitmq_management
通过web来管理rabbitmq
Memcached
认证服务认证缓存使用Memcached缓存令牌
- 安装软件包
yum install memcached python-memcached
- 修改监听地址
- 开机启动
systemctl enable --now memcached
认证服务
- keystone 主要提供两大功能:授权管理和目录服务
创建一个数据库和管理员令牌
- 用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -p
- 创建 keystone 数据库:
CREATE DATABASE keystone;
- 对
keystone
数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
- 退出数据库,可以通过keystone用户登陆数据库查看数据库是否创建成功。
- 生成一个随机值在初始的配置中作为管理员的令牌。
openssl rand -hex 10
安装相应的组件
- 安装软件包
yum install openstack-keystone httpd mod_wsgi
-
编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
-
在
[DEFAULT]
部分,定义初始管理令牌的值:[DEFAULT] ... admin_token = ADMIN_TOKEN
-
在
[database]
部分,配置数据库访问:[database] ... connection = mysql+pymysql://keystone:keystone@controller/keystone
3 .在[token]
部分,配置Fernet UUID令牌的提供者。[token] ... provider = fernet
-
-
初始化身份认证服务的数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
- 初始化Fernet keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置 Apache HTTP 服务器
- 编辑
/etc/httpd/conf/httpd.conf
文件,配置ServerName
选项为控制节点:
ServerName controller
-
用下面的内容创建文件
/etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost>
-
启动 Apache HTTP 服务并配置其随系统启动
systemctl enable --now httpd
创建服务实体和API端点
- 配置认证令牌:
export OS_TOKEN= admin_token
admin_token 是keystone.conf 中随机生成的admin_token
- 配置端点URL:
export OS_URL=http://controller:35357/v3
- 配置认证API版本
export OS_IDENTITY_API_VERSION=3
创建服务实体和API端点¶
- 在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。创建服务实体和身份认证服务:
openstack service create --name keystone --description “OpenStack Identity” identity
- 添加三种api端点
openstack endpoint create --region RegionOne
identity public http://controller:5000/v3
openstack endpoint create --region RegionOne
identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne
identity admin http://controller:35357/v3
创建域、项目、用户和角色
- 创建域
default
:
openstack domain create --description “Default Domain” default
-
在你的环境中,为进行管理操作,创建管理的项目、用户和角色:
- 创建 admin 项目:
openstack project create --domain default
–description “Admin Project” admin - 创建 admin 用户:
openstack user create --domain default --password admin admin
- 创建 admin 角色:
openstack role create admin
- 添加
admin
角色到 admin 项目和用户上:openstack role add --project admin --user admin admin
- 创建 admin 项目:
-
使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建
service
项目openstack project create --domain default
–description “Service Project” service -
常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。
- 创建
demo
项目:
openstack project create --domain default
–description “Demo Project” demo- 创建
demo
用户:
openstack user create --domain default
–password-prompt demo- 创建
user
角色
openstack role create user
- 添加 user
角色到
demo 项目和用户:
openstack role add --project demo --user demo user
- 创建
创建脚本
-
编辑文件 admin-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
ADMIN_PASS指(admin的密码)
-
编辑文件 demo-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
DEMO_PASS为demo用户的密码
镜像服务
安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。
建立数据库
controller节点
- 用数据库连接客户端以 root 用户连接到数据库服务器:
mysql -u root -p
- 创建glance数据库
CREATE DATABASE glance;
- 对
glance
数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’ IDENTIFIED BY ‘glance’;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’ IDENTIFIED BY ‘glance’;
创建服务实体
- 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc
-
要创建服务证书,完成这些步骤:
- 创建 glance 用户:
openstack user create --domain default --password-prompt glance
- 添加 admin 角色到 glance 用户和 service 项目上
openstack role add --project service --user glance admin
- 创建
glance
服务实体:
openstack service create --name glance
–description “OpenStack Image” image- 创建镜像服务的 API 端点:
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne mage internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
安全并配置组件
-
安装软件包:
yum install openstack-glance
-
编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
- 在 [database] 部分,配置数据库访问:
[database] ... connection = mysql+pymysql://glance:glance@controller/glance
- 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] ... flavor = keystone
- 在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:
[glance_store] ... stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
-
编辑文件
/etc/glance/glance-registry.conf
并完成如下动作:- 在 [database] 部分,配置数据库访问:
[database] ... connection = mysql+pymysql://glance:glance@controller/glance
- 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] ... flavor = keystone
-
写入镜像服务数据库:
su -s /bin/sh -c “glance-manage db_sync” glance
- 启动镜像服务、配置他们随机启动:
systemctl enable --now openstack-glance-api.service openstack-glance-registry.service
- 上传思科镜像,cirros镜像需要自己下载
openstack image create “cirros”
–file cirros-0.3.4-x86_64-disk.img
–disk-format qcow2 --container-format bare
–public
- openstack image list 列出当前可用镜像
nova 计算服务
controller节点上:
安装部署
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-controller-install.html
验证操作
openstack compute service list
安装和配置计算节点
安装计算节点:配置环境
- cpu 的类型 host-passthrough
- 两块网卡,一台网卡只打开什么都不作
- 解析,
- 时间同步服务ntp
- 安装openstack包,给compute 节点配置openstack yum源,通过
yum upgrade
升级一下包 - 安装和配置计算节点https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html
rabbitmqctl authenticate_user openstack openstack
用于验证openstack 用户的密码 - 验证操作:
openstack compute service list
neturon网络服务
安装并配置控制节点
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install.html
配置公共网络
在controller节点上安装并配置网络组件
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html
neutron agent-list 验证
安装和配置计算节点
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install.html
公共网络
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install-option1.html
验证操作:neutron agent-list
尝试启动一个实例
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/launch-instance.html
创建提供者网络
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/launch-instance-networks-provider.html
Dashborad
安装和配置
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/horizon-install.html
时区参数: Asia/Shanghai
云主机镜像构建
https://docs.openstack.org/image-guide/centos-image.html
正常安装rhel7.6系统,不需要修改network
网络设置为dhcp的格式
可以手工加入一个ip以便操作:
- 创建一个yum源仓库。
yum install acpid
systemctl enable acpid
- 配置cloud-init的本地软件仓库
yum install cloud-init
- 为了正确调整根分区的大小,请安装该 cloud-utils-growpart软件包
yum install cloud-utils-growpart
- 禁用zeroconf路由¶
为了使实例能够访问元数据服务,您必须禁用默认的zeroconf路由:
echo “NOZEROCONF=yes” >> /etc/sysconfig/network
-
配置控制台 编辑/boot/grub2/grub.cfg文件
-
关闭selinux 和 firewalld
-
在真机上用
virt-sysprep -d test
对虚拟机进行清理 -
对虚拟机进行压缩
virt-sparsify --compress test.qcow2 /var/www/html/content/test.qcow2
添加镜像
通过openstack的web界面添加镜像
使用admin 用户上传,需要加入公有标签
创建一个云主机使用类型:
用demo用户创建一个云主机测试
添加私有网络
在controller节点上添加私有网络
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option2.html
在计算节点上安装之后,重启服务
systemctl restart neutron-server neutron-linuxbridge-agent
设置开机自启
systemctl enable neutron-l3-agent.service
systemctl start neutron-l3-agent.service
安装和配置计算节点的私有网络
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install-option2.html
重启服务
systemctl restart neutron-linuxbridge-agent.service
修改Dashboard 的配置文件
重启web服务器以及会话存储服务:
systemctl restart httpd.service memcached.service
创建网络
回收正在使用的云主机,用admin用户添加一个public网络,在public网络下,创建一个子网,地址池是172.25.10.100- 172.25.10.200
创建一个私有网络
- 用demo用户
3 .
- 创建两个虚拟机,一个使用public网络,一个使用private网络。private私有网络的云主机需要路由规则才可以访问外部网络,外部网络想要访问私有网络的云主机,私有网络的云主机需要申请浮动ip的方式,才可以让外部网络来访问私有网络下的云主机。
添加一个块存储服务
启动一个虚拟机,用于作为block主机
可以不需要双网卡,不需要host-passthrough
对控制节点的安装和部署
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html
安装并配置存储节点
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html
文件配置:/etc/lvm/lvm.conf
创建一个云硬盘
创建一个云硬盘,管理连接到云主机,通过mount 命令 挂在到云主机内的某个目录下,实现数据的永久存储,即使云主机回收,数据也不会丢失,通过mkfs.ext4 /dev/vdb
ext4格式。当云硬盘扩容之后,可以通过resize2fs /dev/vdb
使得在云主机上硬盘大小显示正常。
官网: https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-networking-controller.html