官网参考地址:
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. docker 备注

    1.docker 安装 #安装环境为centos yum -y install docker service docker start #测试是否安装成功,可执行命令 docker run hello ...

  2. springboot~Mongodb的集成与使用

    说说springboot与大叔lind.ddd的渊源 Mongodb在Lind.DDD中被二次封装过(大叔的.net和.net core),将它当成是一种仓储来使用,对于开发人员来说只公开curd几个 ...

  3. springboot~hazelcast缓存中间件

    缓存来了 在dotnet平台有自己的缓存框架,在java springboot里当然了集成了很多,而且缓存的中间件也可以进行多种选择,向redis, hazelcast都是分布式的缓存中间件,今天主要 ...

  4. .NET Core Session的简单使用

    前言 在之前的.NET 里,我们可以很容易的使用Session读取值.那今天我们来看看 如何在.NET Core中读取Session值呢? Session 使用Session之前,我们需要到Start ...

  5. Asp.Net Core WebAPI使用Swagger时API隐藏与分组

    1.前言 为什么我们要隐藏部分接口? 因为我们在用swagger代替接口的时候,难免有些接口会直观的暴露出来,比如我们结合Consul一起使用的时候,会将健康检查接口以及报警通知接口暴露出来,这些接口 ...

  6. socket,模拟服务器、客户端通信

    服务器代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...

  7. Linux高级运维 第二章 Linux基本操作和自己动手组装服务器

    2.1  Linux网络相关概念和修改IP地址的方法 2.1.1  网卡的命名规则       Centos 6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在CENTOS6之前,网络接口使用连 ...

  8. 微信ChatEmoji表情适配,对微信公众号开发有帮助

    最近做微信公众号时发现微信ChatEmoji表情与接受的消息显示表情的问题, 微信表情后面的ChatEmoji显示不出,花了一些时间整理,把pc和手机的表情全部都整理了, 由于有两百多个显示可能有点长 ...

  9. 设置input中placeholder的样式(placeholder设置字体)

    方法: 代码示例: .input::-webkit-input-placeholder { font-size: 3.73333333vw; color: #cccccc; } .input:-moz ...

  10. arcgis api 3.x for js 入门开发系列二十一气泡窗口信息动态配置模板

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...