部署memcached与keystone
机器:3台
1:controller:3块网卡(集群网,租户网,外网)
2:compute:2块网卡(集群网,租户网)
3:storage:1块网卡(集群网)
1、设置主机名,彼此域名解析,无密钥登陆
vim /etc/hosts
ssh-keygen ssh-copy-id ip号
以上已拍快照
在其他地方看视频6月3日 30分
因为现在在学校做消息队列的基础上做这个repo源也配好了,所以直接进行一下步骤
在主节点上
Environment
第一步:安装OpenStackpython客户端
注意yum源,如果不是这样可能会出现版本会出现报错(如果有其他的放到old里面)
[root@controller ~]# yum install python-openstackclient -y
安装组件
[root@controller ~]# yum install openstack-selinux -y
第二步:安装数据库
[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL -y
mariadb 客户端
mariadb-server 服务端 如果不在下载mariadb,没有办法通过命令行去登录的
python2-PyMySQL py2的拓展包
第三步:配置一个OpenStack单独的配置文件
[root@controller ~]# cd /etc/my.cnf.d/
[root@controller my.cnf.d]# ls
[root@controller my.cnf.d]# vim openstack.cnf
[mysqld]
bind-address = 192.168.193.150
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
[mysqld]
bind-address = 10.0.0.11 监听的地址 地址写你集群网卡 就是ens33的ip ip一定要写对
default-storage-engine = innodb 默认的数据库引擎
innodb_file_per_table = on 启动引擎
max_connections = 4096 最大链接数 (越大越好)
collation-server = utf8_general_ci 字符集
character-set-server = utf8
第四步:启动数据库
[root@controller ~]# systemctl start mariadb.service
[root@controller ~]# systemctl enable mariadb.service 设置开机自启动
第五步:初始化数据库
[root@controller ~]# mysql_secure_installation
测试是否能登录数据库
数据库正常,exit退出即可
SQL database 完结
第六步:安装消息队列
[root@controller ~]# yum install rabbitmq-server -y (这个之前已配置完成)
启动
root@controller ~]# systemctl start rabbitmq-server.service
[root@controller ~]# systemctl enable rabbitmq-server.service
先关闭防火墙
[root@controller ~]# systemctl stop firewalld
去浏览器里查看是否能正常访问
第七步:在MQ里添加一个普通用户名字为OpenStack
[root@controller ~]# rabbitmqctl add_user openstack admin 创建用户 密码
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*" 设置权限
[root@controller ~]# rabbitmqctl set_user_tags openstack administrator 设置为管理员才能登录
使用浏览器登录 成功为正确
第八步:安装缓存服务
[root@controller ~]# yum install memcached python-memcached -y
修改 memcached配置文件
[root@controller ~]# vim /etc/sysconfig/memcached
启动memcached服务
[root@controller ~]# systemctl start memcached.service
[root@controller ~]# systemctl enable memcached.service
这样就部署完成了
接下来开始keystone服务
Identity service
Install and configure
第一步:去数据库里创建keystone库
因为keystone这个服务它要保存一些数据所以要创建
[root@controller ~]# mysql -u root -p123
MariaDB [(none)]> CREATE DATABASE keystone; 创建库
创建用户并赋予权限可以本地登录还可以远程登录
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
-> IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
-> IDENTIFIED BY '123';
MariaDB [(none)]> exit
第二步:安装keystone服务
[root@controller ~]# yum install openstack-keystone httpd mod_wsgi -y
keystone是没有自己的服务进程 keystone是去调用http去对外提供服务
想使用keystone必须要启动http服务
第三步:修改keystone服务的配置文件
[root@controller ~]# cd /etc/keystone/ 进入目录
[root@controller keystone]# ls 查看
default_catalog.templates keystone-paste.ini policy.json
keystone.conf logging.conf sso_callback_template.html
[root@controller keystone]# cp keystone.conf keystone.conf.bak 复制一份
完后再去修改
[root@controller keystone]# vim keystone.conf
所有配置段删除dG 复制粘贴下面
[DEFAULT]
[assignment]
[auth]
[cache]
[catalog]
[cors]
[cors.subdomain]
[credential]
[database]
connection = mysql+pymysql://keystone:123@controller/keystone
[domain_config]
[endpoint_filter]
[endpoint_policy]
[eventlet_server]
[federation]
[fernet_tokens]
[healthcheck]
[identity]
[identity_mapping]
[kvs]
[ldap]
[matchmaker_redis]
[memcache]
[oauth1]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[paste_deploy]
[policy]
[profiler]
[resource]
[revoke]
[role]
[saml]
[security_compliance]
[shadow_users]
[signing]
[token]
provider = fernet
[tokenless_auth]
[trust]
一共87行 复制可以网站http://learn.yunwei.edu/ --> openstack-->Keystone
16 connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
链接数据库的方式 用keystone用户去连接然后连接controller 这台机器,这个密码必须是你的数据库刚才设定的密码
82 [token]
83 provider = fernet token 创建 fernet组件创建的
修改完后查看权限 下图为正确 属主必须是keystone 权限是640
第四步:同步数据库
因为keystone的数据库是空的
可以登录数据库验证
导入库
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
登录数据库 是有数据的
第五步:创建 Fernet 认证的一些配置
使用keystone-manage创建fernet设置 设置keystone的用户 并且这个用户在 keystone组
因为keystone是做用户管理的所以用keystone创建用户
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone 创建keystone的用户和组
完后在创建keystone的用户信息
[root@controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone 设置keystone用户的角色 并且放到了keystone组里
第六步:做keystone服务的服务端点
有文件夹修改过的 (下面这是命令 注意密码)
keystone-manage bootstrap --bootstrap-password admin \ 这个密码一定要注意
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
下面是这条命令的解释
keystone-manage bootstrap --bootstrap-password admin \ 创建admin用户设置密码这个如果设置错了是没有办法设置OpenStack操作平台的 这个密码一定要注意,下面登录的时候会用到
--bootstrap-admin-url http://controller:35357/v3/ \ 管理网的服务端点 用户名端口号v3是api的版本
--bootstrap-internal-url http://controller:5000/v3/ \ 内部网络服务端点地址 内部服务端点5000
--bootstrap-public-url http://controller:5000/v3/ \ 公共
--bootstrap-region-id RegionOne
其他服务也有这三个服务端点 管理 内部 公共
第七步:编辑http服务的配置文件
因为keystone是通过调用http对外提供服务的
[root@controller ~]# vim /etc/httpd/conf/httpd.conf
96 ServerName controller
第八步:创建一个软链接
它调用是有一个wsgi的模块我们要把这个模块链接到keystone的文件夹下面
[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
源路径是 /usr/share/keystone/wsgi-keystone.conf 链接到/etc/httpd/conf.d/
检查是否链接成功
有了这个keystone才可以调用http
第九步:启动http服务
[root@controller ~]# systemctl start httpd.service
[root@controller ~]# systemctl enable httpd.service
第十步:创建admin用户的环境变量
确保在root下执行下面的操作
[root@controller ~]# vim openrc
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
把百分号全部去掉 : %s/$ //g
$ export OS_USERNAME=admin export 是宣告变量 变量名OS_USERNAME 变量是admin
$ export OS_PASSWORD=admin 密码(就是上面设置的密码)
$ export OS_PROJECT_NAME=admin 项目叫admin
$ export OS_USER_DOMAIN_NAME=Default 域为default
$ export OS_PROJECT_DOMAIN_NAME=Default 项目域的名字default
$ export OS_AUTH_URL=http://controller:35357/v3 用户验证的地址 就是keystone服务端点 v3版本的API
$ export OS_IDENTITY_API_VERSION=3 验证服务的API版本 是第三版本
Prerequisites
创建项目域角色
这时候刚才编辑的环境变量的配置文件就起到作用了,登录就需要使用环境变量
每次使用OpenStack的命令时都需要宣告一下环境变量
使用OpenStack的命令是要先 source openrc
[root@controller ~]# source openrc
[root@controller ~]# openstack project create --domain default --description "Service Project" service
openstack主命令
project create 项目创建
--domain default \ 创建domain域 域的名字叫default
--description 描述
"Service Project" 这个域是服务的项目
service 名字叫service
下图为正确
下图是报错
这样就把service的项目创建完了
查看项目列表
[root@controller ~]# openstack project list
service是新的 admin是自带的
查看用户列表
[root@controller ~]# openstack user list
查看每个服务的服务端点
[root@controller ~]# openstack endpoint list
查看角色
[root@controller ~]# openstack role list
admin 就是root 超级管理员
_member_ 比admin低一点 一些普通的操作使用member
再创建一个demo的项目
先查看项目列表
[root@controller ~]# openstack project create --domain default \
> --description "Demo Project" demo 创建项目 demo
openstack project create --domain default \
> --description "Demo Project" demo
创建demo的用户
下图中用户只有admin
[root@controller ~]# openstack user create --domain default \
> --password-prompt demo
openstack user create 创建用户
--domain default \ 处在default 域里面
--password-prompt demo 给demo的用户的密码
再创建一个角色 角色叫user
[root@controller ~]# openstack role create user 这个只是普通用户的一个角色
把demo用户设置成普通的用户
[root@controller ~]# openstack role add --project demo --user demo user
openstack role 添加角色操作
add --project demo 用户在project demo项目里
--user demo user 用户叫demo 设置角色叫user
Verify operation
现在admin用户的密码生效了可以使用命令需要一个环境变量的值
现在把admin用户的名字和密码取消掉然后再登录一下
取消环境变量的值
[root@controller ~]# unset OS_AUTH_URL OS_PASSWORD
来验证一下
[root@controller ~]# 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
openstack --os-auth-url http://controller:35357/v3 \
登录它的服务端点是找keystone服务端点
--os-project-domain-name default --os-user-domain-name default \
登录的项目是default 域叫default
--os-project-name admin --os-username admin token issue
用项目里面的admin用户来登录 使用token的方式来验证
使用OpenStack的命令
到这keystone服务就部署完成了
人生一世,草木一秋。
众生无我,苦乐随缘。