官网参考地址:
https://docs.openstack.org/keystone/queens/install/index-rdo.html   (但愿能看懂)

环境:
这个部分解释如何按示例架构配置控制节点和一个计算节点
尽管大多数环境中包含认证,镜像,计算,至少一个网络服务,还有仪表盘,但是对象存储服务也可以单独操作。
如果你的使用情况与涉及到对象存储也可以在配置完适当的节点后跳到:ref:swift。
然而仪表盘要求至少要有镜像服务,计算服务和网络服务。
你必须用有管理员权限的帐号来配置每个节点。可以用 root 用户或 sudo 工具来执行这些命令。

以下最小需求支持概念验证环境,使用核心服务和几个:term:`CirrOS`实例:
控制节点: 1 处理器, 8 GB 内存, 及5 GB 存储
计算节点: 1 处理器, 4 GB 内存, 及10 GB 存储

注:如无特殊声明,所有命令都在node1上执行

外网IP      内网IP    主机名    网卡
192.168.1.160   172.16.0.5    controller    NIC*2   #控制节点
192.168.1.161   172.16.0.6    compute     NIC*2   #计算节点

#修改IP
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens3*
vim ifcfg-ens3*
TYPE="Ethernet"
BROWSER_ONLY="no"
BOOTPROTO=static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=172.16.0.5
NETMASK=255.255.0.0

#测试联通性
ping 172.16.0.6

#修改免登陆
ssh-keygen -t rsa #手动同样在其他节点也执行该条命令
#自动生成秘钥
#ssh-keygen -t dsa -f ~/.ssh/id_rsa -P ""
cat .ssh/id_rsa.pub >>~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@192.168.1.161:~/.ssh

#简单安装包
yum -y install wget lrzsz
#修改hosts
vim /etc/hosts
192.168.1.160 controller
192.168.1.161 compute
192.168.1.160 node1    #便于管理
192.168.1.161 node2    #便于管理

scp /etc/hosts root@192.168.1.161:/etc/

#做跳板
echo "alias a='for a in {1..2};do'" >>/etc/profile
echo "alias b='for b in 2;do'" >>/etc/profile
source /etc/profile

#关闭防火墙
a ssh node$a 'setenforce 0';done
a ssh node$a 'systemctl stop firewalld.service';done
a ssh node$a 'systemctl disable firewalld.service';done

#配置yum源
a ssh node$a 'mkdir /mnt/usb{1..3}';done
a ssh node$a 'cd /etc/yum.repos.d/ && for i in `ls`;do mv $i{,.bak};done';done
a ssh node$a 'mv /etc/yum.repos.d/CentOS-Media.repo.bak /etc/yum.repos.d/CentOS-Media.repo';done
a ssh node$a 'mv /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo';done
vim CentOS-Media.repo
.....
baseurl=file:///mnt/usb1/
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=0
enabled=1
.....

scp /etc/yum.repos.d/CentOS-Media.repo root@node2:/etc/yum.repos.d/

a ssh node$a 'mount /dev/sr0 /mnt/usb1';done

a ssh node$a 'wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo';done

控制节点服务器:
#网络时间协议
a ssh node$a 'yum -y install chrony';done
sed -i "s/#allow 192.168.0.0\/16/allow 172.16.0.0\/16/" /etc/chrony.conf

b ssh node$b 'sed -i "s/server 0/# server 0/" /etc/chrony.conf';done
b ssh node$b 'sed -i "s/server 1/# server 1/" /etc/chrony.conf';done
b ssh node$b 'sed -i "s/server 2/# server 2/" /etc/chrony.conf';done
b ssh node$b 'sed -i "s/server 3/# server 3/" /etc/chrony.conf';done
b ssh node$b 'sed -i "/# server 3/a\server 192.168.1.160 iburst" /etc/chrony.conf';done

#启动chrond
a ssh node$a 'systemctl restart chronyd.service';done {start | stop}
a ssh node$a 'systemctl enable chronyd.service';done
a ssh node$a 'timedatectl set-timezone Asia/Shanghai';done #设置时区
a ssh node$a 'chronyc sources';done

#安装OpenStack
#官方源:a ssh node$a 'yum -y install centos-release-openstack-rocky';done
阿里源:
a ssh node$a 'cat << EOF >> /etc/yum.repos.d/openstack.repo
[openstack-rocky]
name=openstack-rocky
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
enabled=1
gpgcheck=0
[qume-kvm]
name=qemu-kvm
baseurl= https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gpgcheck=0
EOF';done

#升级所有节点上的包:
#a ssh node$a 'yum -y upgrade';done
#a ssh node$a 'yum clean packages && yum clean headers && yum clean all';done
#a ssh node$a 'reboot';done #该步可能需要手动执行root,或者使用其他方法

#安装OpenStack客户端和安全策略:
a ssh node$a 'yum -y install python-openstackclient openstack-selinux';done

#安装数据库(只在控制节点上安装)
yum -y install mariadb mariadb-server python2-PyMySQL

#新创建和编辑/etc/my.cnf.d/openstack.cnf文件
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 127.0.0.1
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

systemctl start mariadb.service
systemctl enable mariadb.service

#设置密码及初始化
mysql_secure_installation #这里密码定为123456
Enter current password for root (enter for none): #这里直接按空格
Set root password? [Y/n]    #输入Y
Remove anonymous users? [Y/n]    #输入y
Disallow root login remotely? [Y/n]    #输入n
Remove test database and access to it? [Y/n]    #输入y
Reload privilege tables now? [Y/n]    #输入y

#安装消息队列(只在控制节点上安装)
yum -y install rabbitmq-server
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service

添加openstack用户:
#rabbitmqctl add_user openstack <RABBIT_PASSWORD>
rabbitmqctl add_user openstack 123456
  Creating user "openstack"
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  Setting permissions for user "openstack" in vhost "/"     #允许配置、写、读访问openstack
#注:rabbitmq默认端口是15672
查看支持的插件:rabbitmq-plugins list
启动插件:rabbitmq-plugins enable rabbitmq_management      #rabbitmq_management表示实现WEB管理
重启rabbitmq服务: systemctl restart rabbitmq-server.service
测试访问http://192.168.1.160:15672 登陆的用户密码皆是guest。(设置的密码表示元数据的密码)

#安装Memcached(只在控制节点上安装)
yum -y install memcached python-memcached
#编辑/etc/sysconfig/memcached
vim /etc/sysconfig/memcached
  OPTIONS="-l 127.0.0.1,::1,controller"

systemctl start memcached.service
systemctl enable memcached.service

#安装ETCD(只在控制节点上安装)
yum -y install etcd
vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.0.5:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.0.5:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.0.5:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.0.5:2379"
ETCD_INITIAL_CLUSTER="controller=http://172.16.0.5:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

systemctl start etcd
systemctl enable etcd
注:此时查看集群会看到有报错,但不影响,这些我先跳过
[root@node1 ~]# etcdctl cluster-health
  cluster may be unhealthy: failed to list members
  Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:2379: connect: connection refused
  ; error #1: dial tcp 127.0.0.1:4001: connect: connection refused
  error #0: dial tcp 127.0.0.1:2379: connect: connection refused
  error #1: dial tcp 127.0.0.1:4001: connect: connection refused

#安装OpenStack服务
创建数据库
mysql -uroot -p
Enter password: #密码为刚才初始化时定义的123456密码
MariaDB [(none)]> CREATE DATABASE keystone; #身份认证
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show databases;
MariaDB [(none)]> exit

#安装和配置组件
yum -y install openstack-keystone httpd mod_wsgi
#编辑以下文件
vim /etc/keystone/keystone.conf
[database] #在该区域内
#connection = <None> 改为 connection = mysql+pymysql://keystone:123456@controller/keystone
[token]
#provider = fernet 改为 provider = fernet

#填充Identity服务数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone           #这里容易出错

######################################################################################
#初始化Fernet密钥存储库(初始化fernet key库):
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

#引导身份认证
keystone-manage bootstrap --bootstrap-password 123456 \
--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

#编辑httpd配置文件
vim /etc/httpd/conf/httpd.conf
ServerName controlle

#创建文件链接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

#启动httpd服务
systemctl start httpd
systemctl enable httpd

#配置管理帐户:
# export OS_USERNAME=admin               # 定义账户为admin
# export OS_PASSWORD=123456             # admin的密码为123456
# export OS_PROJECT_NAME=admin            # 项目名也是admin
# export OS_USER_DOMAIN_NAME=Default        # 账户域名为默认
# export OS_PROJECT_DOMAIN_NAME=Default      # 账户项目域名为默认
# export OS_AUTH_URL=http://ControllerNode:5000/v3   # 验证地址为Controller节点地址加端口
# export OS_IDENTITY_API_VERSION=3

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:5000/v3 
export OS_IDENTITY_API_VERSION=3

#创建service项目
openstack project create --domain default --description "Service Project-1" service

glance安装
mysql -uroot -p123456
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456';

#编写环境变量脚本admin-openrc
vim ~/admin-openrc
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:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

source admin-openrc      #该步必须执行,才会生效

创建用户、服务等
openstack user create --domain default --password-prompt glance
User Password:      #提示输入密码,自定义即可,这里我定义的
Repeat User Password:

openstack role add --project service --user glance admin
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 internal http://controller:9292

openstack endpoint create --region RegionOne image admin http://controller:9292

#安装软件包
yum -y install openstack-glance

编辑配置文件/etc/glance/glance-api.conf

vim /etc/glance/glance-api.conf

[database]

connection = mysql+pymysql://glance:123456@controller/glance

[keystone_authtoken]

....

www_authenticate_uri = http://controller:5000
....
auth_uri = http://controller:5000
....
memcached_servers = controller:11211
....
auth_type = password

[paste_deploy]
....
flavor = keystone

[glance_store]
....
stores = file,http
....
default_store = file
....
filesystem_store_datadirs = /var/lib/glance/images/

编辑配置文件/etc/glance/glance-registry.conf
vim /etc/glance/glance-registry.conf
....
[database]
....
connection = mysql+pymysql://glance:123456@controller/glance
....
[keystone_authtoken]
....
www_authenticate_uri = http://controller:5000
....
auth_uri = http://controller:5000
....
memcached_servers = controller:1211
....
auth_type = password

[paste_deploy]
....
flavor = keystone

#同步数据库
su -s /bin/sh -c "glance-manage db_sync" glance
注:日志文件在tail -f /var/log/glance/api.log

#启动服务
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service

openstack 2019/4/28的更多相关文章

  1. 「FFT」题单(upd 2019.4.28)

    持续更新(last upd 2019.4.28) ZJOI2014 力 [题目链接] 解法 对原式进行转换,然后卷积FFT套上去求解就可以了. 推导过程简洁版: \[F_i=\sum_{j<i} ...

  2. Alpha冲刺(5/10)——2019.4.28

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(5/10)--2019.4.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  3. 2019.3.28&2019.3.30考试

    2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...

  4. 2019.2.28&2019.3.1 考试

    因为没A/改几道题,就一起写了 题目在LOJ上都能找到 2019.2.28 100+20+12 前两个小时一直在睡觉+想题也没思路,我太菜了 T1 洗衣服 分开处理出洗衣服和烘干的时间,然后一边正着排 ...

  5. 梦想MxWeb3D协同设计平台 2019.02.28更新

    梦想MxWeb3D协同设计平台 2019.02.28更新 SDK开发包下载地址: http://www.mxdraw.com/ndetail_10130.html 在线演示网址: http://www ...

  6. Beta冲刺(7/7)——2019.5.28

    所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(7/7)--2019.5.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...

  7. AI2(App Inventor 2)离线版服务器(2019.04.28更新)

    我们的目标:搭建一个本地多用户的App Inventor 2 服务器   演示: http://ai2.fsyz.net  [旧 win]     http://ai2n.fsyz.net [新 Ce ...

  8. Cheatsheet: 2018 11.01 ~ 2019 02.28

    Golang FromXToGo micro - A microservice toolkit Other Easy parsing of Excel spreadsheet format with ...

  9. 项目Beta冲刺(6/7)(追光的人)(2019.5.28)

    所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 描述Beta冲刺每日的scrum和PM报告两部分 队员学号 队员博客 221600219 小墨 https:/ ...

随机推荐

  1. css块级元素和行内元素详细解析

    块级元素和行内元素是布局中常见的两种基本元素,但是未必有很多人深入的研究它们的细微差别. 常见块级元素:div  p  form ul ol li 等: 常见的行内元素:span stronh em; ...

  2. AI应用开发实战 - 手写算式计算器

    扩展手写数字识别应用 识别并计算简单手写数学表达式 主要知识点 了解MNIST数据集 了解如何扩展数据集 实现手写算式计算器 简介 本文将介绍一例支持识别手写数学表达式并对其进行计算的人工智能应用的开 ...

  3. 技能提升丨Seacms 8.7版本SQL注入分析

    有些小伙伴刚刚接触SQL编程,对SQL注入表示不太了解.其实在Web攻防中,SQL注入就是一个技能繁杂项,为了帮助大家能更好的理解和掌握,今天小编将要跟大家分享一下关于Seacms 8.7版本SQL注 ...

  4. 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义

    0.随机森林的思考 随机森林的决策树是分别采样建立的,各个决策树之间是相对独立的.那么,在我们得到了第k-1棵决策树之后,能否通过现有的样本和决策树的信息, 对第m颗树的建立产生有益的影响呢?在随机森 ...

  5. 【Python3爬虫】用Python发送天气预报邮件

    此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...

  6. Netty源码—一、server启动(1)

    Netty作为一个Java生态中的网络组件有着举足轻重的位置,各种开源中间件都使用Netty进行网络通信,比如Dubbo.RocketMQ.可以说Netty是对Java NIO的封装,比如ByteBu ...

  7. Scss预处理器的使用总结

    变量 .嵌套.Mixin混合.function函数.插值 变量及文件导入 通过$定义变量 $white:#fff; $black:#000; 变量引用 .containner{ color:$blac ...

  8. DS控件库 在Combobox中嵌入远程桌面

    本示例演示DS开放式下拉列表控件中加入一个RDP远程桌面控件. 先在VS工具箱中添加COM控件Microsoft RDP Client Control,后面的Version版本可以适当高点. 然后将R ...

  9. Raptor井字棋游戏

    作为大学第一个小作品,记录一下,也给那些想接触到Raptor游戏的人一个小小的参考QAQ至于Raptor的语法和使用,可以参考一下他的帮助手册,看不懂英文的话可以复制放到翻译上看. 以上是主函数 以下 ...

  10. 使用visualStudio2017创建一个简单的控制台程序

    步骤: 1.  打开visual studio开发工具 2. 选择文件>新建>项目 如下图所示: 3. 选择window金典桌面>控制台应用程序 并填写好想项目名称和选择项目存储地址 ...