linux云计算部署openstack创建虚拟机的步骤安装 1 (keystone和rabbitmq和memcached和mysql和glace组件安装配置)

部署openstack案例1  keystone和rabbitmq和memcached和mysql和glace组件安装配置

1.Keystone服务组件 介绍功能 关系图 与其他组件工作流程

1.什么是keystone

KeystoneOpenStack的身份认证服务。

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镜像apiregistry服务  端口 工作流程

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、horizonkeystone认证

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、computenova-conductor获取了vm的具体信息后 请求glance 调用镜像(glance去keystone认证)

10、computenova-conductor获取了vm的具体信息后 请求neutron 调用网络(neutron去keystone认证)

11、computenova-conductor获取了vm的具体信息后 请求cinder 调用磁盘(glance去cinder认证)

12、compute 根据具体vm信息调用虚拟化驱动来创建虚拟机

 

 

 

posted @ 2020-08-10 14:45  浅唱I  阅读(689)  评论(0编辑  收藏  举报