CentOS部署OpenStack过程-基础和认证服务

基本信息

Openstack结构图

OpenStack网络结构

OpenStack控制节点服务

<--!more-->

步骤

启用网络事件协议NTP

  1. 控制节点
# install
sudo yum install chrony -y
# config
sudo vi /etc/chrony.conf
# modify
server Server_Name or IP iburst
allow 192.168.122.0/24
# start service
sudo systemctl start chronyd
sudo systemctl enable chronyd
  1. 计算节点
# install
sudo yum install chrony -y
# config
sudo vi /etc/chrony.conf
# modify 注释掉除server外的字段
server cont_server iburst
# start service
sudo systemctl start chronyd
sudo systemctl enable chronyd

安装OpenStack库

  1. 安装OpenStack库
    sudo yum install centos-release-openstack-ocata -y
  2. 安装OpenStack客户端
    sudo yum install python-openstackclient -y
  3. 安装SELinux策略文件
    sudo yum install openstack-selinux -y

数据库

MySQL数据库

OpenStack服务使用SQL数据库来存储信息,数据库运行在控制节点上。

  1. 安装软件
    sudo yum install yum install mariadb mariadb-server python2-PyMySQL -y
  2. 配置
cd /etc/my.cnf.d
sudo vi mariadb.cnf
# mysqld part
[mysqld]
# change ip to controller node ip address
bind-address=192.168.122.200 
# set store-engine and character
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
  1. 启动服务
# start
sudo systemctl start mariadb
sudo systemctl enable mariadb
# set firewall rule
su root
firewall-cmd --zone=public --add-rich-rule='rule famliy=ipv4 source address=192.168.122.100 port port=3306 protocol=tcp accept' --permanent
firewall-cmd --reload
  1. 检查MySQL数据库安全
    mysql_secure_installation

NoSQL数据库

Telemetry服务使用NoSQL数据库来存储信息,该服务运行在控制节点上。

  1. 安装
    sudo yum install mongodb-server mongodb -y
  2. 配置
cd /etc
sudo vi mongod.conf
# modfiy
bind_ip=192.168.122.200
# limit log size 128M
smallfiles=true
  1. 启动服务
# start
sudo systemctl start mongod
sudo systemctl enable mongod

消息队列RabbitMQ

OpenStack使用 message_queue 协调操作和个服务的状态信息。消息队列服务运行在控制节点上。OpenStack支持多种消息队列服务,包括:RabbitMQ、Qpid和ZeroMQ。

  1. 安装
    sudo yum install rabbitmq-server -y
  2. 启动服务
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
  1. 添加用户
# create rabbitmq user with passwd
rabbitmqctl add_user openstack Passwd
# grant privilege
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Memcached

认证服务认证缓存使用Memcached缓存令牌,缓存服务Memcached运行在控制节点上。

  1. 安装
    sudo yum install memcached python-memcached -y
  2. 启动服务
sudo systemctl start memcached
sudo systemctl enable memcached

认证服务

当openStack服务收到来自用户的请求时,该服务询问Identity服务,验证该用户是否有权限进行此次请求。身份服务包含的组件有:服务器、驱动、模块。
在安装认证服务前,需要线创建数据库和管理员令牌。

安装条件

  1. 创建数据库
# login Mysql
mysql -u root -p
# create keystone database
create database keystone;
# grant privilege on keystone
grant all privileges on keystone.* to 'ks_db'@'localhost' identified by 'Passwd';
grant all privileges on keystone.* to 'ks_db'@'192.168.122.%' identified by 'passwd';
flush privileges;
  1. 生成一个随机值在初始配置中作为系统管理员令牌
    openssl rand -hex 10
    记下刚生成的随机码:e7d81bfae3c2884d8ea1

安装认证服务

  1. 安装
    sudo yum install openstack-keystone httpd mod_wsgi -y
    使用mod_wsgi来服务认证服务请求,端口号为 5000 35357
  2. 配置
cd /etc/keystone
sudo vi keystone.conf
# modify [default]  replace with copybord
admin_token = e7d81bfae3c2884d8ea1
# modify [database] replace db_passwd with mysql database passwd
# replace db_server with db-server-name or ip
# mysql+pymysql://db_user:db_passwd@db-server/db_name
connection = mysql+pymysql://ks_db:db_passwd@db-server/keystone
# modify [token]
provider = fernet
  1. 初始化身份认证数据库
    su -s /bin/sh -c "keystone-manage db_sync" keystone
  2. 初始化Fernet Keys
    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置Apache服务器

  1. 编辑httpd.conf文件/etc/httpd/conf/httpd.conf
    ServerName ops-cont
  2. 创建wsgi-keystone.conf文件
cd /etc/httpd/conf.d && sudo touch wsgi-keystone.conf
# add
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>
  1. 启动服务
# start
sudo systemctl start httpd
sudo systemctl enable httpd
# add firewall rule
su root
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --zone=public --add-port=35357/tcp --permanent
firewall-cmd --reload

创建服务实体和API端点

身份认证服务提供服务的目录和他们的位置,每个添加到OpenStack环境中的服务在目录中需要一个service实体和一些API_endpoints

安装条件

默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息,需要使用临时身份验证令牌来初始化服务实体和API端点。

  1. 配置认证令牌为环境变量
    export OS_TOKEN=e7d81bfae3c2884d8ea1
  2. 配置端点URL
    export OS_URL=http://ops-cont:35357/v3
  3. 配置认证API版本
    export OS_IDENTITY_API_VERSION=3

创建服务实体和API端点

在OpenStack环境中,认证服务管理服务目录,使用这个目录来决定环境中可用的服务。
OpenStack使用三个API端点代表每种服务:admin,internalpublic。默认情况下,管理API端点允许修改用户和租户而内部和公众APIs不允许这些操作。
公众API是为了让用户管理自己的云在互联网上是可见的;内部API网络回被限制在包含OpenStack服务的主机上。

  1. 创建服务实体和身份认证服务
openstack service create \
--name keystone --description "OpenStack Identity" identity
openstack-create-service
  1. 所有端点和默认RegionOne区域都使用管理网络
    identity与创建的服务实体认证中的identity对应
# create public API
openstack endpoint create --region RegiOne \
identity public http://ops-cont:5000/v3
# create internal API
openstack endpoint create --region RegionOne \
identity internal http://ops-cont:5000/v3
# create admin API
openstack endpoint create --region RegionOne \
identity admin http://ops-cont:5000/v3
create-region

创建域、项目、用户和角色

创建的角色都映射到每个OpenStack服务配置文件目录下的policy.json文件中。

  1. 创见域default
openstack domain create --description "Default Domain" default
  1. 创建项目、用户和角色
# 创建admin项目,项目要包含在域中
openstack project create --domain default \
--description "Admin Project" admin
# 创建用户,输入用户密码
openstack user create --domain default \
--password-prompt admin
# 创建角色
openstack role create admin
# 将角色添加到用户上,执行后无输出
openstack role add --project admin --user admin admin
openstack-create-domain-project-user-role
  1. 创建每个服务独有用户的service项目
openstack project create --domain default \
--description "Service Project" service
openstack-project-create-service
  1. 创建非管理无特权的项目和用户
# 创建demo项目
openstack project create --domain default \
--description "Demo Project" demo
# 创建用户
openstack user create --domain default \
--password-prompt demo
# 创建角色
openstack role create user
# 将角色添加到用户上
openstack role add --project demo --user demo user

验证操作

在安装其他服务之前需要在控制节点上确认身份认证服务。

  1. 关闭临时认证令牌服务
cd /etc/keystone
vi keystone-paste.ini
# remove admin_token_auth from below
[pipeline:public_api]
[pipiline:admin_api]
[pipeline:api_v3]
  1. 重置环境变量
    unset OS_URL OS_TOKEN
  2. 请求用户admin认证令牌,输入用户认证密码
openstack --os-auth-url http://ops-cont:35357/v3 \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name admin \
--os-username admin token issue
  1. 请求用户demo认证令牌,注意与用户admin区分端口号
openstack --os-auth-url http://ops-cont:5000/v3 \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name demo \
--os-username demo token issue
openstack-user-auth-token

参考

1.OpenStack-DOC

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容