zoukankan      html  css  js  c++  java
  • OpenStack 认证服务 KeyStone部署(三)

    Keystone 介绍

    Keystone作用:

    1. 用户与认证:用户权限与用户行为跟踪;
    2. 服务目录:提供一个服务目录,包括所有服务项和相关Api的断点
    3. SOA相关知识

    Keystone主要两大功能用户认证和服务目录(相当于一个注册中心)

    • 用户认证名词介绍

    User:用户
     它是用一个数字代表使用openstack云服务的一个人、系统、或服务。身份验证服务将会验证传入的由用户声明将调用的请求
     一个租户可以有多个用户
     一个用户可以属于一个或多个租户
     用户对租户和操作权限由用户在租户中承担的角色来决定。

    Project:项目
     它是各个服务中的一些可以访问的资源集合或者说叫资源组。它是一个容器,用于组织和隔离资源,或标识对象。

    Token:令牌

    Role:角色
    代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。

    • 服务目录两大名词介绍

    Service:服务
    Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Project和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service。

    Endpoint:端点
    Endpoint翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。Endpoint的每个URL都对应一个服务实例的访问地址,并且具有public、orivate和admin这三种权限。pubic url可以完全被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。

    KeyStone安装

    yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached
    

    提示: wsgi是python一个cgi的接口

    KeyStone配置

    编辑文件/etc/keystone/keystone.conf,我们管理keystone只需要修改keystone的配置文件即可。

    备注:在配置文件里面以[xxx]里面的内容叫做配置栏目(类似于mysql配置文件[mysqld])

    • [DEFAULT]部分,定义初始管理令牌的值,我们使用openssl生成一个随机值。
    [root@linux-node1 ~]# openssl rand -hex 10
    07081849f55281652
    [root@linux-node1 ~]# vim /etc/keystone/keystone.conf
    [DEFAULT]
    admin_token = 07081849f55281652dac

    提示:keystone默认没有用户,需要进行创建用户。这样我们在配置文件中加入admin_token,在没有用户的情况下可以使用admin_token进行访问。还可以设置不用用户名和密码。简单来说admin_token就是初始化时候超级管理员的用户。

    • [database]部分,配置数据库访问:
    [database]
    connection = mysql+pymysql://keystone:keystone@192.168.137.11/keystone
    

    提示:用户名:密码@数据库地址/库名称 

    • [token]部分,配置Fernet UUID令牌的提供者

    提供令牌有四种方式[fernet|pkiz|pki|uuid]默认是uuid。

    [token]
    provider = fernet
    driver = memcache

    默认是存储在sql中,我们需要将它修改为memcache

    • [memcache]部分,配置memcache的连接地址和端口
    [memcache]
    servers = 192.168.137.11:11211
    

    初始化数据库

    su -s /bin/sh -c "keystone-manage db_sync" keystone
    

    自动找到keystone配置文件里的mysql连接,来帮我们创建数据库中的表。

    • 我们为什么要使用keystone用户去同步数据库呢? 

    因为同步数据库会在/var/log/keystone目录下去写日志,如果使用root权限同步,当keystone用户启动服务时读取这个日志文件,那么它将无法进行读取(权限问题),会出现启动错误的情况。

    检查表是否创建成功

    mysql -h 192.168.137.11 -ukeystone -pkeystone -e "use keystone;show tables;"
    

    提示:如果查看表的时候发现没有,通过日志/var/log/keystone/keystone.log排查报错信息。

    初始化Fernet keys

    创建相关的证书

    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    

    执行完命令之后会在/etc/keystone下生成fernet-keys目录,它的权限是keystone里面存放这一些相关证书。

    提示:我们要注意/etc/keystone目录下文件的权限。

    memcached启动和设置

    systemctl enable memcached.service
    systemctl start memcached.service
    

    查看配置文件/etc/sysconfig/memcached

    • PORT="11211"  # 端口号
    • USER="memcached"  # 用户
    • MAXCONN="1024"    # 最大连接数
    • CACHESIZE="64"  # 大小64MB

    netstat -ntlp检查服务端口是否存在

    apache配置

    • 配置/etc/httpd/conf/httpd.conf文件,配置ServerName 选项为控制节点
    [root@linux-node1 ~]# vim /etc/httpd/conf/httpd.conf
    ServerName 192.168.137.11:80
    
    • 创建配置文件/etc/httod/conf.d/wsgi-keystone.conf
    [root@linux-node1 ~] vim /etc/httpd/conf.d/wsgi-keystone.conf
    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>
    
    • apache启动并设置开机自启动
    systemctl enable httpd.service
    systemctl start httpd.service
    
    • netstat -ntlp检查服务端口是否存在

    查看日志 /var/log/keystone/keystone.log 是否有报错信息

    • 排错,开启debug模式
    vim /etc/keystone/keystone.conf
    [DEFAULT]
    debug = true
    
  • 相关阅读:
    SpringCloud组件---Ribbon
    SpringCloud组件---Eureka
    tomcat及Jetty远程调试debug
    mysql 删除重复数据
    mysql执行SQL语句时报错:[Err] 3
    线程池原理剖析
    上限下限
    线程池Executors、Callable与Future的应用
    spring获取bean(自定义工具类)
    java.util.concurrent.Exchanger应用范例
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/6359882.html
Copyright © 2011-2022 走看看