本篇博文主要搭建OpenStack架构中的keystone组件,之后会依次带来OpenStack中的glance、nova、neutron、horizon、cinder和虚拟机的管理操作。在实验部署之前,先对OpenStack进行以下了解!
OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。
OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。
OpenStack当前主要有三个组件:计算,存储,镜像。
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
控制节点:负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点:负责虚拟机运行
网络节点:负责对外网络与内网络之间的通信
存储节点:负责对虚拟机的额外存储管理等等
控制节点包括以下服务:
本实验需三台虚拟机,分别为控制节点(包含镜像服务)、计算节点、存储节点;建议三台虚拟机配置2个CPU,内存设置为4G。
主机 | 系统 | IP地址 | 角色 |
---|---|---|---|
controller | CentOS7 | 192.168.37.128 | keystone、ntp、mariadb、rabbitmq、memcached、etcd、apache |
compute | CentOS7 | 192.168.37.130 | nova、ntp |
cinder | CentOS7 | 192.168.37.131 | cinder、ntp |
1、关闭防火墙 关闭selinux
systemctl stop firewalld.service
setenforce 0
2、分别修改主机名
hostnamectl set-hostname controller #控制节点
bash
hostnamectl set-hostname compute #计算节点
bash
hostnamectl set-hostname cinder #存储节点
bash
3、修改hosts文件
vim /etc/hosts
192.168.37.128 controller
192.168.37.130 compute
192.168.37.131 cinder
4、节点互通测试
ping -c 4 openstack.org #发送4个包测试官网联通
ping -c 4 compute
ping -c 4 openstack.org #计算节点测试
ping -c 4 controller
ping -c 4 openstack.org #存储节点测试
ping -c 4 controller
5、备份默认yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
6、下载最新yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
7、安装所需openstack软件包
yum install centos-release-openstack-queens -y
yum upgrade -y #更新软件仓库
yum install python-openstackclient -y
yum install openstack-selinux -y
##controller节点##
1、yum安装chrony软件包
yum install chrony -y
2、修改chrony配置文件
vim /etc/chrony.conf #文件开头插入
server controller iburst #自己为时间源点所有节点向controller节点同步时间
allow 192.168.37.0/24 #设置时间同步网段
3、开启NTP服务
systemctl enable chronyd
systemctl stop chronyd
systemctl start chronyd
#因chrony服务本身开机自启动,所以需要关闭后重新开启
##其他节点配置##
1、yum安装chrony软件包
yum install chrony -y
2、修改chrony配置文件
vim /etc/chrony.conf
server controller iburst #同步controller
3、开启服务
systemctl stop chronyd
systemctl start chronyd
4、controller上验证时钟同步服务
chronyc sources
1、yum安装mariadb
yum install mariadb mariadb-server python2-PyMySQL -y
2、修改mariadb配置文件
vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#以下是新增内容
bind-address = 192.168.37.128 #绑定地址controller
default-storage-engine = innodb #默认存储引擎
innodb_file_per_table = on #独立表空间
max_connections = 4096 #最大连接
collation-server = utf8_general_ci #字符集设定
character-set-server = utf8
3、开启mariadb服务,设置开启自启动
systemctl enable mariadb.service
systemctl start mariadb.service
4、数据库基本设置
mysql_secure_installation
#基本设置,除设置密码为abc123外全部回车
1、yum安装rabbitmq-server包
yum install rabbitmq-server -y
2、开启rabbitmq服务,设置开启自启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
3、重启服务后添加用户及权限
rabbitmqctl add_user openstack 123456 #添加用户
rabbitmqctl set_permissions openstack "." "." ".*"
1、yum安装memcached包
yum install memcached python-memcached -y
2、修改memcached配置文件
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 192.168.37.128,::1" #修改监听IP地址
3、开启memcached服务,设置开启自启动
systemctl enable memcached.service
systemctl start memcached.service
1、yum安装etcd包
yum install etcd -y
2、修改etcd配置文件,结果如下:
ETCD_INITIAL_CLUSTER #开启群集功能:匹配群集中所有url地址(public、admin、internal)
ETCD_INITIAL_ADVERTISE_PEER_URLS
ETCD_ADVERTISE_CLIENT_URLS
ETCD_LISTEN_CLIENT_URLS
[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #文件存放位置
ETCD_LISTEN_PEER_URLS="http://192.168.37.128:2380" #监听群集服务端地址
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.128:2379" #宣告客户端地址
ETCD_NAME="controller"
[Clustering] #匹配群集地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.128:2380" #控制端地址
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.128:2379" #客户端地址
ETCD_INITIAL_CLUSTER="controller=http://192.168.37.128:2380" #群集名称设定
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" #令牌设定
ETCD_INITIAL_CLUSTER_STATE="new"
3、开启etcd服务,设置开机自启动
systemctl enable etcd.service
systemctl start etcd.service
1、单独创建数据库keystone,声明用户并授权
mysql -uroot -p #密码abc123
create database keystone;
grant all privileges on keystone. to 'keystone'@'localhost' identified by '123456'; #本地用户授权
grant all privileges on keystone. to 'keystone'@'%' identified by '123456';
flush privileges; #其他用户授权
2、yum安装软件包
yum install openstack-keystone httpd mod_wsgi -y
3、编辑keystone配置文件
vim /etc/keystone/keystone.conf
[database]
#737行
connection = mysql+pymysql://keystone:123456@controller/keystone
[token]
#2922行
provider = fernet #安全消息传递算法
4、同步数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
5、初始化数据库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
6、给管理员设置密码,注册三种访问方式
keystone-manage bootstrap --bootstrap-password 123456 \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
1、编辑httpd配置文件
vim /etc/httpd/conf/httpd.conf
ServerName controller
2、建立软连接,使apache识别keystone
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
3、开启Apache服务,设置开机自启动
systemctl enable httpd.service
systemctl start httpd.service
4、声明环境变量
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
1、创建域Domain
openstack domain create --description "Domain" example
2、创建项目Service Project
openstack project create --domain default --description "Service Project" service
3、创建平台demo项目
openstack project create --domain default --description "Demo Project" demo
4、创建demo用户
openstack user create --domain default --password-prompt demo
#输入密码:123456
5、创建用户角色
openstack role create user
6、添加用户角色到demo项目和用户
openstack role add --project demo --user demo user
1、取消环境变量
unset OS_AUTH_URL OS_PASSWORD
2、admin用户返回的认证token
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
#密码:123456
3、demo用户返回的认证token
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
#密码:123456
4、创建admin-openrc脚本
vim 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
5、创建demo-openrc脚本
vim 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
6、使用脚本,返回认证token
source ~/admin-openrc
openstack token issue
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。