linux云计算部署openstack创建虚拟机的步骤安装 1 (keystone和rabbitmq和memcached和mysql和glace组件安装配置)
部署openstack案例1 keystone和rabbitmq和memcached和mysql和glace组件安装配置
1.Keystone服务组件 介绍功能 关系图 与其他组件工作流程
1.什么是keystone
Keystone是OpenStack的身份认证服务。
Keystone项目的主要目的是为访问openstack的各个组件(nova,cinder,glance...)提供一个统一的验证方式。
2.keystone功能
作为 OpenStack 云系统的入口,keystone 作用
1.)管理用户及其权限
2) 维护 OpenStack Services 的 Endpoint
3) Authentication(认证)和 Authorization(鉴权)
3.keystone概念详解 各个服务 关系图解释
User用户,云环境的资源使用者
Credentials凭证 要使用资源,要提供凭证(用户名和密码) 当通过keystone认证 会给 令牌,下一次认证提供令牌(包括验证信息)即可
Authentication认证过程
Token令牌
Project项目 隔离资源 openstack之前为租户的意思
Service服务 nova等服务
Endpoint服务端点 暴露出来的url 和apl服务之间通信
Role角色 不同用户使用权限不一样 ,通过绑定角色 设置赋予 权限
keystone各概念关系图
1.User实验工作过程
1)用户使用资源 要绑定角色 提供凭证 第一次登录要提供用户名和密码 认证提供会注册到token令牌中,颁发令牌 认证通过可以使用资源 之后也会是令牌来验证
2)由service服务提供资源 service由keystone管理 然后keystone的endpoint暴露出url链接
Url分为三种 admiurl云环境管理员 和interurl内部服务 和 publicurl 公有云 公网(不同身份来访问,暴露出url不一样)
3)User是资源的使用者 资源以项目方式划分 项目隔离资源 user又归属于具体某一个项目
项目拥有 资源的 配额quota (计算,存储,网络三个资源) 即能够使用多少
Computer quota计算
Cinder quota存储卷
Image quota镜像
4)Role 角色 分为管理员角色 普通用户角色 给不同用户设定角色, 就可以使用角色所拥有的权限
实现机制 基于 角色的 policy策略(可理解为配置文件设定的内容权限 增删改查)
Endpoint端点
Service服务
Client客户端
Policy策略 政策
Role角色
Tenant租户 即 项目
Quota份额
4.keystone与openstack其他服务关系
5.keystone与其他组件协同工作流程
2.登录openstack的网址 部署组件的网址
1.openstack官网 主网址
https://docs.openstack.org/train/
2.Keystone服务组件
https://docs.openstack.org/keystone/queens/install/index-rdo.html
3.glance 镜像服务
https://docs.openstack.org/glance/queens/install/
4.nova 服务组件
https://docs.openstack.org/nova/queens/install/
5.neturn 组件
https://docs.openstack.org/neutron/queens/install/install-rdo.html
6.horizon 即为dashboard组件
https://docs.openstack.org/horizon/queens/install/install-rdo.html
7.cinder 块存储设备组件
https://docs.openstack.org/cinder/queens/install/index-rdo.html
8.登录网页
192.168.20.40/dashboard/
3.环境配置 控制节点 和计算节点 ,安装同步时间服务 和 预安装openstack包
1.部署openstack计划 思路
1.节点角色 控制节点和 计算节点
2.网卡ip(内部,外部,管理 这三个网卡)
3.实验前准备工作 修改 ip yum 关闭防火墙,改主机名和解析hosts
4.安装时间服务 数据库mariadb服务 和 rabbitmp消息队列服务(增加用户) 和memcache缓存服务
5.keystone认证
创建keystone数据库 授权
安装hddpt数据包,修改配置文件
填充数据库
初始化keystone服务, 设置admin密码 暴露出keystone的 url
启动httpd服务
6.验证
安装客户端openstack的包
增加环境变量 增加两个为管理员admin和普通用户demo环境变量
资源 : Demain 和projiect项目 用来划分管理资源 和user身份和 role角色
注意
控制节点的服务计算节点服务
认证 keystonenova-compute
各个APL服务(通信交互)neutron-agent
Memcache缓存服务
Rabbitmp 消息队列服务
Maraidb 数据库服务
2.配置 控制节点 和计算节点 的 网卡 和yum 下载环境
1.两台机器 各三块网卡 10 20 和联网三个网段 保证网可通
2.主的控制节点IP为 20.40 10.10 和联网 然后 从 计算节点 IP为 20.11 10.20 和连网
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens37
2.配置yum 两台配置一样
vim /etc/yum.repos.d/CentOS-Base.repo
[os]
name=os
enabled=1
gpgcheck=0
baseurl=http://mirrors.aliyun.com/centos/7.7.1908/os/x86_64/
[update]
name=update
enabled=1
gpgcheck=0
baseurl=http://mirrors.aliyun.com/centos/7.7.1908/updates/x86_64/
[extras]
name=extras
enabled=1
gpgcheck=0
baseurl=http://mirrors.aliyun.com/centos/7.7.1908/extras/x86_64/
[ocata]
name=ocata
enabled=1
gpgcheck=0
baseurl=http://mirrors.aliyun.com/centos/7.7.1908/cloud/x86_64/openstack-queens/
#[base]注释原来本地的即可
#name=CentOS-$releasever - Base
#baseurl=file:///media/cdiso
#gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum clean all
yum makecache
yum repolist
3.关闭 防火墙selinux,修改主机名 每台机器添加hosts文件解析
vi /etc/sysconfig/selinux关闭selinux 改为disabled
./fhq
getenforce查看状态
vim /etc/hosts
hostnamectl set-hostname controller
计算节点第二台机器
hostnamectl set-hostname cong
getenforce
vi /etc/hosts写两个,本机和 控制节点的IP20.40
4.安装软件 时间同步 两台机器安装 修改配置 启动服务
1.安装 修改配置
主控制节点
yum install -y chrony
vim /etc/chrony.conf修改两处
计算节点
yum install -y chrony
vim /etc/chrony.conf修改一处即可
2.启动服务两台同样操作
systemctl enable chronyd.service
systemctl start chronyd.service启动服务
chronyc sources验证 看是否有* 有就是对的
在S那一列包含*号,代表同步成功(可能需要花费几分钟去同步,时间务必同步)
date查看日期
5.预装包openstack (两台都节点执行)
yum install python-openstackclient -y
yum install openstack-selinux -y
4.控制节点 部署mariadb数据库 修改配置文件 启动sql服务 初始化
yum install mariadb mariadb-server python2-PyMySQL -y安装
vim /etc/my.cnf.d/openstack.cnf 增加修改配置文件
[mysqld]
bind-address = 192.168.20.40
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
启动服务:
systemctl enable mariadb.service
systemctl start mariadb.service
systemctl status mariadb.service
mysql_secure_installation数据库初始化
除了输入root密码 其余回车即可
Enter current password for root (enter for none): 为root用户输入当前密码(为none输入):
Set root password? [Y/n] 设置根密码?[Y / n] 123 123
Remove anonymous users? 删除匿名用户?
Disallow root login remotely? [Y/n] 不允许root远程登录?[Y / n]
Remove test database and access to it? [Y/n]删除测试数据库并访问它?[Y / n]
Reload privilege tables now? [Y/n] 现在重新加载特权表?[Y / n]
mysql -uroot -p
show databases;可看到只有原始配置 ,说明之前设置初始化成功
5.控制节点 部署消息队列rabbitmq (验证方式:http://控制节点管理ip:15672/ 用户:openstack 密码:123)
yum install rabbitmq-server -y控制节点安装服务
systemctl enable rabbitmq-server.service启动服务
systemctl start rabbitmq-server.service
rabbitmqctl add_user openstack 123新建rabbitmq用户密码
rabbitmqctl set_permissions openstack ".*" ".*" ".*"为新建的用户openstack设定权限
6.控制节点 部署memcached缓存 (为keystone服务缓存tokens)
yum install memcached python-memcached -y安装memcached
vim /etc/sysconfig/memcached 修改配置文件 为控制节点的IP
systemctl enable memcached.service启动服务
systemctl start memcached.service
systemctl status memcached.service查看状态
7.控制节点 创建数据库keystone 赋予权限 修改配置文件 填充数据库 安装httpd服务
mysql -u root -p123
create database keystone;
赋予权限
grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123'; keys库的所有表
grant all privileges on keystone.* to 'keystone'@'%' identified by '123'; 任何主机可远程登录
grant all privileges on keystone.* to 'keystone'@'controller' identified by '123';
yum install openstack-keystone httpd mod_wsgi-y安装httpd
1.修改keystone配置文件 两处 vim /etc/keystone/keystone.conf
vim /etc/keystone/keystone.conf
1.在[database]部分,配置数据库访问:
在命令行 查找 /[databasn 表示查找下一个
[databas数据库 添加下面一行 (718行)
connection = mysql+pymysql://keystone:123@controller/keystone数据库的地址
Mysql方法 数据库 用户 密码 登录用户(可写IP对应数据库的服务器) 访问keystone库
2.修改token令牌 增加以下内容
[token]
provider = fernet新版本的令牌有三四种 ??
2.填充数据库 登录验证 是否存在tables表
su -s /bin/sh -c "keystone-manage db_sync" keystone填充认证服务的 数据库
mysql -u root -p123
show databases;
use keystone;
show tables;
3.指定属主属组(默认即可)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
4.导入认证服务 初始化认证服务 定义管理员admin 的密码为 123
keystone-manage bootstrap --bootstrap-password 123 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
5.修改httpd的配置文件 增加servername控制节点主机名 制作软链接连接http子目录下
1.修改配置文件 增加 servername 控制节点
vim /etc/httpd/conf/httpd.conf
Controller为主节点的主机名称
2.增加软连接启动http相当于启动keysdone服务 启动服务
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
8.控制节点 配置管理员账户的 环境变量(keystoned) 和增加demo普通用户的环境变量
1.admin管理用户的环境变量
vi admin.sh
export OS_PROJECT_DOMAIN_NAME=Default项目(用来隔离资源) 所属域叫default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin项目为admin
export OS_USERNAME=admin用户为admin
export OS_PASSWORD=123keystone--manage指定的密码 初始化的密码
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3api版本
export OS_IMAGE_API_VERSION=2api版本
. admin.sh执行bash
env|grep OS_查看环境变量是否生效
如若不增加bash则会提示这个
2.创建普通用户demo的环境变量
vim demo.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
9.控制节点 创建资源 创建域创建demo项目
1.创建 域(云环境比较大 按地域划分 北京 上海)
openstack domain create --description "An Example Domain" example
openstack project list查看列表 ,创建demo这个项目
openstack project create --domain default \
--description "Service Project" demo
openstack project create --domain default \
--description "Service Project" service创建service
openstack project list查看资源项目
2.创建demo 用户
openstack user create --domain default \
--password-prompt demo
3.查看角色 创建user角色 关联 把user这个角色添加到demo项目中的demo用户
openstack role list查看角色
openstack role create user创建角色user
openstack user list
openstack role add --project demo --user demo user关联 把user这个角色添加到demo项目中的demo用户
这样就可以以admin用户或者demo 身份登录,
4.验证keystone服务 临时取消环境变量 然后以admin管理员身份 查看能否请求到令牌
unset OS_AUTH_URL OS_PASSWORD临时取消
Admin用户身份 请求令牌
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
Demo用户也验证一下申请令牌
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
或者总的查看
. admin.sh 执行脚本重新载入
openstack token issue
10.控制节点 部署Glance镜像api和registry服务 端口 工作流程
Glance服务
Glance-api : 接受处理外界镜像相关请求(os大小 qcow2) 暴露出来的api
到真正的存储上,拉取镜像文件
Glance-registry:对接数据库db 镜像元信息,镜像存放的具体位置 (即为注册到数据库存储)
Clance服务在控制节点上,因为涉及到 api和registry
1.端口:
glance-registry的监听端口为9191
glance-api的监听端口为9292
2.工作流程
1.Glance-api接收REST API的请求,类似nova-api
2.Glance-api在功能上与nova-api十分类似,都是接收REST API请求,
通过其他模块(glance-registry及Image Store)来完成诸如镜像的查找、‘获取、上传、删除等操作,
3.Glance-registry用于与MySQL数据库交互, 用于存储或获取镜像的元数据(metadata);
提供镜像元数据相关的REST接口,通过glance-registry,可以向数据库写入或获取镜像的各种数据,
glance的数据库中有两张表,一张是image表,另一张是imgage propetry表。
image表保存了镜像的格式、大小等信息;而image propetry表则主要保存镜像的定制化信息。
可以通过:mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"查看表信息
4.image store是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持有Amazon的S3,OpenStack本身的swift,还有诸如ceph,GlusterFS等分布式存储。Image Store仅仅是一个接口处,具体的实现需要外部的存储支持。
总结:
glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。
glance-api 不会真正处理请求。
如果是与 image metadata(元数据)相关的操作,glance-api 会把请求转发给 glance-registry;
如果是与 image 自身存取相关的操作,glance-api 会把请求转发给该 image 的 store 。
1.创建glance数据库 授权
操作步骤网址:
https://docs.openstack.org/glance/queens/install/install-rdo.html#install-and-configure-components
注意做一个主键之前 先建立数据库
mysql -uroot -p123登录数据库
create database glance;创建glance库
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123';建立用户
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123';远程登录
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'controller' IDENTIFIED BY '123';本机登录
2.创建glance用户 添加到service项目中的 role add绑定admin管理员角色
. admin.sh 执行admin的环境脚本 以admin用户身份来执行以下操作
openstack user create --domain default --password-prompt glance创建用户glance
openstack role add --project service --user glance admin
3.创建一个服务 image 暴露出endpoint即url (三个)
openstack service create --name glance --description "OpenStack Image" image
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
4.安装glance服务软件包 修改glance的两个配置文件
yum install openstack-glance -y
vim /etc/glance/glance-api.conf
1.
[database]
connection = mysql+pymysql://glance:123@controller/glance
2.
[keystone_authtoken]认证凭据
auth_uri = http://controller:5000keystone认证的端口
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password认证方式
project_domain_name = Default属于default域
user_domain_name = Default
project_name = service属于service的项目
username = glance
password = 123为之前创建的glance用户user的密码
3.
[paste_deploy]认证找keystone
flavor = keystone
4.
[glance_store]支持存储方式 file本地 http
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
第二个主配置文件
vi /etc/glance/glance-registry.conf
1.
[database]
connection = mysql+pymysql://glance:123@controller/glance
2.
[keystone_authtoken]认证
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = 123
3.
[paste_deploy]认证方式
flavor = keystone
5.填充数据库 登录mysql 查看glance库表
su -s /bin/sh -c "glance-manage db_sync" glance载入数据库
mysql -uroot -p123
show databases;
use glance
show tables;
6.启动服务openstack-glance-api和 openstack-glance-registry
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl status openstack-glance-api.service openstack-glance-registry.service
7.验证 创建镜像测试
建一个测试镜像
. admin.sh
openstack endpoint list查看列表
上传测试镜像 cirros-0.3.5-x86_64-disk.img
或者 下载镜像
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public创建镜像
Cirros名字
File 镜像来源
Diskformat 磁盘镜像格式
container-format bare另一种镜像格式
Public表示公共磁盘位置如下
openstack image list查看列表 glance公共镜像存放位置
cd /var/lib/glance/images/
8.注意 如果创建镜像 报错为HTTPInternalServerError (HTTP 500)
查看解析名称和主机名是否对应,
查看两个配置文件的url
vi /etc/glance/glance-api.conf 和vim /etc/glance/glance-registry.conf
然后跟踪日志查看出错的地方
cd /var/log/glance/
tail -f api.log
tail -f registry.log
11.0
1、horizon去keystone认证
2、horizon 将请求发送给api(带认证)
3、nova-api 再去认证
4、nova-api修改数据库虚拟机信息
5、nova-api 让scheduler确认在哪台主机
6、nova-scheduler 确认主机信息后 修改数据库
7、nova-scheduler向compute发送创建虚拟机请求信息
8、compute(请求,包括创建虚拟机请求) 让nova-conductor去数据库查询具体信息,
9、compute从nova-conductor获取了vm的具体信息后 请求glance 调用镜像(glance去keystone认证)
10、compute从nova-conductor获取了vm的具体信息后 请求neutron 调用网络(neutron去keystone认证)
11、compute从nova-conductor获取了vm的具体信息后 请求cinder 调用磁盘(glance去cinder认证)
12、compute 根据具体vm信息调用虚拟化驱动来创建虚拟机