• OpenStack Ocata版本安装


    1 安装环境
    从官网文档获悉,安装一套openstack环境至少需要两台虚拟机,一台作为controller节点,一台作为compute节点,block存储节点和object节点可以选择性安装。本次仅安装controller节点和compute节点。
    即使是搭建概念验证环境,OpenStack也对环境有一定的要求,最低标准如下所示:
    • Controller Node: 1 processor, 4 GB memory, and 5 GB storage
    • Compute Node: 1 processor, 2 GB memory, and 10 GB storage
    2 安装准备
    2.1 设置hostname
    1. 编辑控制节点上的/etc/hosts文件,修改控制器节点的hostname。
    2. 编辑计算节点上的/etc/hosts文件,修改计算节点的hostname。
    2.2 设置网络接口
    1、将控制节点上的第二个网口设置为provide interface,无需为其分配IP。编辑/etc/network/interface文件,添加下面内容后重启控制节点。
    auto ens192(第二块网口名称)
    iface ens192 inet manual
    up ip link set dev $IFACE up
    down ip set dev $IFACE down
    2、将计算节点上的第二个网口设置为provide interface,具体操作与上面相同。
     
    2.3 网络时间协议NTP
    在各个节点上安装chrony,确保各个节点能够准确同步服务。
    控制节点
    1、安装chrony
    apt install chrony
    2、确保计算节点能够连接控制上的chrony,在/etc/chrony/chrony.conf中添加:
    server NTP_SERVER iburst allowe 172.171.0.0/24(计算节点网段)
    3、重启NTP服务
    service chrony restart
    计算节点
    1、安装chrony
    apt install chrony
    2、确保计算节点能够连接控制上的chrony,在/etc/chrony/chrony.conf中添加:
    server NTP_SERVER iburst
    注释下述内容 :
    pool 2.debian.pool.ntp.org iburst
    3、重启NTP服务
    service chrony restart
    验证
    1、在控制节点上执行下述命令,结果中带星号的是NTP当前同步的地址。
    chronyc sources
    2、 在计算节点上执行下述命令,结果中“Name/IP address”一栏显示的应该是控制节点的hostname。
    chronyc sources
    2.4 启用openstack库
    在所有节点执行下列操作,启用openstack库:
    apt install software-properties-common add-apt-repository cloud-archive:ocata apt update apt dist-upgrade # 升级包 apt install python-openstackclient #安装openstack客户端
    2.5安装数据库
    1、在控制节点安装数据库
    apt install mariadb-server python-pymysql
    2、创建/etc/mysql/mariadb.conf.d/99-openstack.cnf,并编辑内容如下
    bind-address = [controller-ip] default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8
    3、运行mysql_secure_installation脚本来保证数据库安全,为root账户设置一个合适的密码
    mysql_secure_installation
    2.6 安装消息队列服务
    1、使用RabbitMQ消息队列服务,在controller安装消息队列服务
    apt install rabbitmq-server
    2、添加用户,用合适的密码替代‘RABBIT_PASS’。
    rabbitmqctl add_user openstack RABBIT_PASS
    3、用户权限配置
    rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    2.7 安装memcache
    1、认证服务的认证机制使用Memcached来缓存token,一般运行在控制节点上。在控制节点上执行:
    apt install memcached python-memcache
    2、编辑/etc/memcached.conf,将”-i 127.0.0.1“中的IP改成控制节点IP。
    3、重启memcache服务
    service memcached restart
    3 认证服务
    用户使用OpenStack时,通常第一个接触的服务就是认证服务,只有经过认证服务认证,用户才能使用其他OpenStack服务。另外认证服务还可以和一些外部用户管理系统(如LDAP)进行集成。认证服务的主要组成包括:
    • Server:通过RESTful接口提供认证、授权服务的中央服务器;
    • Drivers:集成到中央服务器中,负责获取OpenStack外部仓库中的认证信息。
    • Modules:运行于使用认证服务的OpenStack组件的地址空间中,负责拦截服务请求,提取用户证书后发往中央服务器请求授权。
    认证服务安装在控制节点,以下就是具体安装步骤。
    3.1 先决条件
    1、使用root用户进入数据库,创建keystone数据库,并赋予适当的权限:
    mysql -u root -p
    > CREATE DATABASE keystone;
    > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
    > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
    其中 'KEYSTONE_DBPASS'是自己设置的密码,由于安装过程中设置的密码较多,建议设置成易记的密码。
    3.2安装配置组件
    1、安装keystone
    apt install keystone
     
    2、编辑/etc/keystone/keystone.conf:
    [database]
    connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
    #KEYSTONE_DBPASS是创建keystone数据库时设置的密码
    [token]
    provider=fernet
     
    3、同步认证服务数据库
    su -s /bin/sh –c "keystone-manage db_sync" keystone
     
    4、初始化Fernet key仓库
    keystone-manage fernet_setup --keystone-user keystone
    --keystone-group keystone
    keystone-manage credential_setup --keystone-user
    keystone --keystone-group keystone
     
    5、bootstrap认证服务
    keystone-manage bootstrap --bootstrap-password
    ADMIN_PASS --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
    其中‘ADMIN_PASS’是admin用户的密码,请自行定义。
     
    3.3. 配置Apache HTTP服务器
    1、 编辑/etc/apache2/apache2.conf,添加
    ServerName controller
     
    3.4 完成安装
    1、 重启Apache服务,删除默认的SQL数据库
    service apache2 restart
    rm -f /var/lib/keystone/keystone.db
     
    2、 配置管理员帐号
    $ export OS_USERNAME=admin
    $ export OS_PASSWORD=ADMIN_PASS
    $ 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
    ADMIN_PASS是bootstrap认证服务时设置的密码。
     
    3、Identity service为其他OpenStack服务提供认证服务,而认证服务需要domains, projects, users和roles。因此安装好keystone后先创建service项目:
    openstack project create --domain default --description "Service Project" service
     
    4、一般的操作无需使用admin用户,创建一个demo项目和用户,作为普通用户使用。
    #创建一个demo项目
    openstack project create --domain default
    --description "Demo Project" demo
    #创建一个demo 用户
    openstack user create --domain default --password-prompt demo
     
    5、创建user角色,并且将user角色添加到demo项目和用户中:
    openstack role create user
    openstack role add --project demo --user demo user
    认证服务到此安装完成,在安装其他服务前先验证认证服务。
     
    3.5. 验证操作
    1、安全起见,禁用暂时的认证令牌机制。编辑/etc/keystone/keystone-paste.ini,将[pipeline:public_api]、 [pipeline:admin_api]、 [pipeline:api_v3] sections 中的admin_token_auth删除。
     
    2、取消设置临时的OS_AUTH_URL和 OS_PASSWORD环境变量
    unset OS_AUTH_URL OS_PASSWORD:
    unset OS_AUTH_URL OS_PASSWORD
     
    3、admin用户请求认证token
    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
     
    4、demo用户请求认证token
    openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue
     
    3.6. 创建脚本
    1、创建openstack客户端环境脚本admin-openrc:
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=ADMIN_PASS #admin用户的密码
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
     
    2、为demo用户创建demo-openrc脚本:
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=demo export OS_USERNAME=demo
    export OS_PASSWORD=DEMO_PASS #demo用户的密码
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
     
    3、加载admin-openrc文件,作为admin用户运行客户端,请求认证token:
    . admin-openrc
    openstack token issue
     
    4 镜像服务
    镜像服务是IaaS的核心服务,可以接受disk镜像或server镜像的API请求,也可以接受终端用户和OpenStack计算组件的metadata定义,并且支持存储镜像到多种类型的仓库中,包括OpenStack的对象存储中。用户可以使用镜像服务发现、注册、获取虚拟机镜像,而且可以通过镜像服务提供的rest api查询虚拟机镜像的metadata并获取镜像。镜像服务的主要组件包括:
    • glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
    • glance-registry:存储、处理、获取镜像的metadata,镜像的metadata中包含镜像的大小、类型等信息。
    • Database:存储镜像metadata,可以根据喜好选择数据库,通常用户会选用MySQL 或 SQLite。
    • Storage repository for image files:支持多种类型的仓库,包括普通文件系统、对象存储、RADOS块设备、VMware datastore以及HTTP。需要注意,其中一些仓库仅支持只读方式使用。
    • Metadata definition service:为厂商、admin、服务、用户提示的通用API,用于自定义metadata,定义的metadata可以用于各种各样的资源,例如镜像、卷、配额等。
    镜像服务也安装在控制节点上,以下是镜像服务的具体安装过程。
     
    4.1. 先决条件
    1、 进入数据库,创建glance数据库,并赋权限
    mysql -u root -p
    > CREATE DATABASE glance;
    > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
    > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
    将'GLANCE_DBPASS'替换成自定义的密码。
     
    2、 导入admin证书,获取admin权限。
    . admin-openrc
     
    3、 创建glance用户,并设置密码
    openstack user create --domain default --password-prompt glance
     
    4、 添加管理员角色到glance用户和service项目中
    openstack role add --project service --user glance admin
     
    5、添加glance服务实体
    openstack service create --name glance --description "openstack image" image
     
    6、添加image服务api endpoint
    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
     
    4.2. 安装配置组件
     
    1、安装glance
    apt install glance
     
    2、编辑/etc/glance/glance-api.conf文件
    [database]
    connection=mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
    #glance数据库密码
    [keystone_authtoken]
    auth_uri=http://controller:5000
    auth_url=http://controller:35357
    memcached_servers=controller:11211
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    project_name=service
    username=glance
    password=GLANCE_PASS #glance用户密码
     
    [paste_deploy]
    flavor = keystone
     
    [glance_store]
    stores = file,http
    default_store = file
    filesystem_store_datadir = /var/lib/glance/images/
     
    3、编辑/etc/glance/glance-registry.conf
    [database]
    connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
    #glance数据库密码
     
    [keystone_authtoken]
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    memcached_servers = controller:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = glance password = GLANCE_PASS #glance用户密码
     
    [paste_deploy]
    flavor = keystone
     
    3、更新镜像服务数据库
    su -s /bin/sh -c "glance-manage db_sync" glance
     
    4、重启镜像服务
    service glance-registry restart
    service glance-api restart
    service glance-api restart
     
    4.3. 验证操作
    1、以admin用户身份运行客户端,并下载cirros镜像
    . admin-openrc
     
    2、以qcow2格式上传镜像到镜像服务,设置为public确保其他服务可以使用该镜像。
    openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
     
    3、查看上传好的镜像
    openstack image list
    5 计算服务
    5.1. 安装配置控制节点
    5.1.1 先决条件
    1、进入mysql,创建数据库nova_api、nova、nova_cell0,并赋予一定的权限。
    create database nova_api;
    create database nova;
    create database nova_ce110;
    grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'NOVA_DBPASS';
    grant all privileges on nova_api.* to 'nova'@'%' identified by 'NOVA_DBPASS';
    grant all privileges on nova.* to 'nova'@'localhost' identified by 'NOVA_DBPASS';
    grant all privileges on nova.* to 'nova'@'%' identified by 'NOVA_DBPASS';
    grant all privileges on nova_ce110.* to 'nova'@'localhost' identified by 'NOVA_DBPASS';
    grant all privileges on nova_ce110.* to 'nova'@'%' identified by 'NOVA_DBPASS';
    其中'NOVA_DBPASS'是自定义的数据库密码。操作完成后则退出数据库。
     
    2、创建计算服务证书
    #以admin身份运行客户端
    . admin-openrc
    #创建nova用户
    openstack user create --domain default --password-prompt nova
    #将admin角色添加到nova用户
    openstack role add --project service --user nova admin
    #创建nova服务体
    openstack service create --name nova --description "openstack compute" compute
     
    3、创建Compute API service endpoints:
    openstack endpoint create --region RegionOne compute
    public http://controller:8774/v2.1
    openstack endpoint create --region RegionOne compute
    internal http://controller:8774/v2.1
    openstack endpoint create --region RegionOne compute
     
    4、创建placement服务用户,并自行设置密码
    openstack user create --domain default --password-prompt placement
     
    5、添加placement用户到service项目中,并赋予admin角色。
    openstack role add --project service --user placement admin
    创建placement api实体
    openstack service create --name placement --description "placement api" placement
    创建placement api服务endpoint
    openstack endpoint create --region RegionOne placement public http://controller:8778
    openstack endpoint create --region RegionOne placement internal http://controller:8778
    openstack endpoint create --region RegionOne placement admin http://controller:8778
     
    5.1.2安装配置组件
    1、安装nova组件
    apt install nova-api nova-conductor nova-consoleauth
    nova-novncproxy nova-scheduler nova-placement-ap
     
    2、编辑/etc/nova/nova.conf文件
    [api_database]
    connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
    #NOVA_DBPASS是nova数据库的密码
     
    [database]
    connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova
     
    [DEFAULT]
    transport_url=rabbit://openstack:RABBIT_PASS@controller
    #RABBIT_PASS是在rabbitmq中创建的openstack帐号对应的密码
     
    [api]
    auth_strategy=keystone
     
    [keystone_authtoken]
    auth_uri=http://controller:5000
    auth_url=http://controller:35357
    memcached_servers=controller:11211
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    project_name=service
    username=nova
    password=NOVA_PASS
    #NOVA_PASS是nova用户对应的密码
     
    [DEFAULT] my_ip=10.0.0.11
    use_neutron=True
    firewall_driver=nova.virt.firewall.NoopFirewallDriver
    #注释掉[default]中的log_dir
     
    [vnc] enabled=true
    vncserver_listen=$my_ip
    vncserver_proxyclient_address=$my_ip
     
    [glance]
    api_servers=http://controller:9292
     
    [oslo_concurrency]
    lock_path=/var/lib/nova/tmp
     
    [placement]
    os_region_name=RegionOne
    project_domain_name=Default
    project_name=service
    auth_type=password
    user_domain_name=Default
    auth_url=http://controller:35357/v3
    username=placement
    password=PLACEMENT_PASS
    #PLACEMENT_PASS是placement用户对应的密码
     
    3、更新nova-api数据库
    su -s /bin/sh -c "nova-manage api_db sync" nova
    解决方法:
    编辑/etc/nova/nova.conf文件,注释[database]和[api_database]中“connection=sqlite:////var/lib/nova/nova.sqlite”。再次执行更新数据库命令。
    4、注册cell0数据库
    su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
     
    5、创建cell1 cell
    su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
     
    6、 更新nova数据库
    su -s /bin/sh -c "nova-manage db sync" nova
     
    7、确认cell0和cell1注册成功
    nova-manage cell_v2 list_cells
     
    8、重启计算服务
    service nova-api restart
    service nova-consoleauth restart
    service nova-scheduler restart
    service nova-conductor restart
    service nova-novncproxy restart
     
    5.2. 安装配置计算节点
    5.2.1. 安装配置组件
    1、安装nova组件
    apt install nova-compute
     
    2、编辑/etc/nova/nova.conf文件
    [DEFAULT]
    transport_url=rabbit://openstack:RABBIT_PASS@controller
    #RABBIT_PASS是在rabbitmq中创建的openstack帐号对应的密码
     
    [api]
    auth_strategy=keystone
     
    [keystone_authtoken]
    auth_uri=http://controller:5000
    auth_url=http://controller:35357
    memcached_servers=controller:11211
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    project_name=service
    username=nova
    password=NOVA_PASS
    #NOVA_PASS是 nova用户的密码
     
    [DEFAULT]
    my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS
    use_neutron=True firewall_driver=nova.virt.firewall.NoopFirewallDriver
    #MANAGEMENT_INTERFACE_IP_ADDRESS是计算节点上管理网络的IP。
    #注释掉[default]中的log_dir
     
    [vnc]
    enabled=true vncserver_listen=0.0.0.0
    vncserver_proxyclient_address=$my_ip
    novncproxy_base_url=http://controller:6080/vnc_auto.html
    [glance]
    api_servers=http://controller:9292
     
    [oslo_concurrency]
    lock_path=/var/lib/nova/tmp
     
    [placement]
    os_region_name=RegionOne
    project_domain_name=Default project_name=service
    auth_type=password
    user_domain_name=Default
    auth_url=http://controller:35357/v3
    username=placement
    password=PLACEMENT_PASS
    #PLACEMENT_PASS是placement用户的密码
     
    3、检查硬件是否支持虚拟化,返回值大于0则硬件支持虚拟化,否则需要进行额外的配置。
    egrep -c '(vmx|svm)' /proc/cpuinfo
    当返回值为0时,表明硬件不支持虚拟机,则编辑/etc/nova/nova-compute.conf文件,将libvirt类型从kvm改成qemu。
     
    4、重启服务
    service nova-compute restart
     
    5.2.2. 添加计算节点到cell数据库
    在控制节点执行以下操作步骤
    1、获取admin权限,确认数据库中有计算节点
    . admin-openrc openstack hypervisor list
     
    2、发现计算节点,新增计算节点时都需要执行该操作。
    su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
     
    5.2.3. 确认操作
    1、确认操作也在控制节点执行,获取admin权限,查看服务组件,应该运行着4个服务,“nova-consoleauth”、“nova-scheduler”、“nova-conductor”在控制节点,"nova-compute"在计算节点。
    . admin-openrc openstack compute service list
     
    nova-conductor服务起不来,查看日志发现一直报错:“AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN”。
    解决方法:分析发现可能是因为openstack用户创建不成功,查看rabbitmqctl中的用户,发现确实没有用户,重新创建openstack用户。
    #查看rabbitmq中的用户
    rabbitmqctl list_users
    #添加用户,RABBIT_PASS是openstack用户的密码,须与之前配置的保持一致
    rabbitmqctl add_user openstack RABBIT_PASS
    #再次查看rabbitmq中的用户 rabbitmqctl list_users
    创建用户后,重启nova服务,再次执行以上步骤确认nova服务安装完成。
     
    2、列出认证服务中的API endpoints,确认认证服务的连接性
    openstack catalog list
     
    3、列出镜像,确认镜像服务的连接性
    openstack image list
     
     
    4、检查cells和placement api正常运行
    nova-status upgrade check
     
    6 网络服务
    neutron允许创建、插入其他OpenStack服务管理的接口设备,采用插件式结构因此可以容纳各种类型的网络设备和软件,提供了OpenStack架构和部署的灵活性。neutron主要包括以下模块:
    • neutron-server:接收和路由API请求到合适的OpenStack网络插件。
    • OpenStack网络插件和代理:负责插、拔port,创建网络和子网,以及提供IP地址。
    • 消息队列:通常安装OpenStack的时候都会遇到,负责在neutron-server和各种各样的代理进程之间路由信息,也可以作为数据库存储一些插件的网络状态。
    6.1. 安装配置控制节点
    6.1.1. 先决条件
    1、登录数据库,创建neutron数据库,并赋予权限:
    create database neutron;
    #NEUTRON_DBPASS是数据库密码,自行定义即可
    grant all privileges on neutron.* to
    'neutron'@'localhost' identified by 'NEUTRON_DBPASS';
    grant all privileges on neutron.* to 'neutron'@'%' identified by 'NEUTRON_DBPASS';
    2、获取admin权限,创建网络服务相关credentials:
    . admin-openrc
    #创建neutron用户
    openstack user create --domain default --password-prompt neutron
    #添加admin角色到neutron用户
    openstack role add --project service --user neutron admin
    #创建neutron服务体
    openstack service create --name neutron --description "openstack networking" network
     
    3、创建网络服务api endpoint:
    openstack endpoint create --region ReginOne network
    public http://controller:9696
    openstack endpoint create --region ReginOne network
    internal http://controller:9696
    openstack endpoint create --region ReginOne network
     
    部署Self-service 网络
    部署网络服务有两种选择:
    1)采用简单的结构部署网络服务,仅支持实例连接provider 网络(外部网络),不支持私有网络、路由服务、浮动IP等。另外,只有admin或其他管理员用户才能管理provide网络;
    2)选项2在选项1的基础上添加了三层服务,支持实例连接私有网络。普通用户可以管理自己的私有网络,以及连接公网和私有的路由器。另外,外部网络可以借助浮动IP地址访问私有网络。
    本次安装中,选择选项2:部署Self-service networks。
     
    1、在控制节点安装服务组件。
    apt install neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent
     
    2、编辑/etc/neutron/neutron.conf文件
    [database]
    connection=mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
    #NEUTRON_DBPASS是neutron数据库密码
     
    [DEFAULT]
    core_plugin=ml2 service_plugins=router
    allow_overlapping_ips=true
     
    [DEFAULT]
    transport_url=rabbit://openstack:RABBIT_PASS@controller auth_strategy=keystone
    #RABBIT_PASS是在rabbitmq中创建的openstack帐号对应的密码
     
    [keystone_authtoken]
    auth_uri=http://controller:5000
    auth_url=http://controller:35357
    memcached_servers=controller:11211
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    project_name=service
    username=neutron
    password=NEUTRON_PASS
    #NEUTRON_PASS是neutron用户密码
     
    [DEFAULT]
    notify_nova_on_port_status_changes = true
    notify_nova_on_port_data_changes = true
     
    [nova]
    auth_url=http://controller:35357
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    region_name=RegionOne
    project_name=service
    username=nova
    password=NOVA_PASS
    #NOVA_PASS是nova用户密码
     
    3、配置ML2插件,编辑/etc/neutron/plugins/ml2/ml2_conf.ini
    [ml2]
    #配置支持的网络类型
    type_drivers=flat,vlan,vxlan
    #self-service网络支持vxlan
    tenant_network_types=vxlan
    mechanism_drivers=linuxbridge,l2population
    #注释掉type_drivers的值
     
    [ml2]
    extension_drivers=port_security
     
    [ml2_type_flat]
    flat_networks=provider
    [ml2_type_vxlan]
    vni_ranges=1:1000
    [securitygroup]
    enable_ipset=true
     
    4、配置Linux bridge代理,编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini:
    [linux_bridge]
    #映射provider虚拟网络到provider物理网络接口,PROVIDER_INTERFACE_NAME是第二块网卡名称
    physical_interface_mappings=provider:PROVIDER_INTERFACE_NAME
     
    #OVERLAY_INTERFACE_IP_ADDRESS是物理网络接口的IP地址
    [vxlan]
    enable_vxlan=true
    local_ip=OVERLAY_INTERFACE_IP_ADDRESS
    l2_population=true
     
    [securitygroup]
    enable_security_group=true
    firewall_driver=neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
     
    5、配置三层代理,编辑/etc/neutron/l3_agent.ini
    [DEFAULT]
    interface_driver=linuxbridge
     
    6、配置DHCP代理,编辑/etc/neutron/dhcp_agent.ini
    [DEFAULT]
    interface_driver=linuxbridge
    dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq
    enable_isolated_metadata=true
     
    7、配置metadata agent,编辑/etc/neutron/metadata_agent.ini
    #METADATA_SECRET是metadata proxy的密码,自行定义
    [DEFAULT]
    nova_metadata_ip=controller
    metadata_proxy_shared_secret=METADATA_SECRET
     
    8、配置计算服务使用网络服务,编辑/etc/nova/nova.conf
    #NEUTRON_PASS是neutron用户的密码,METADATA_SECRET是metadata proxy的密码
    [neutron]
    url=http://controller:9696
    auth_url=http://controller:35357
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    region_name=RegionOne
    project_name=service
    username=neutron
    password=NEUTRON_PASS
    service_metadata_proxy=true
    metadata_proxy_shared_secret=METADATA_SECRET
     
    9、更新数据库
    su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
     
    10、重启计算API服务和网络服务
    service nova-api restart
    service neutron-server restart
    service neutron-linuxbridge-agent restart
    service neutron-dhcp-agent restart
    service neutron-metadata-agent restart
    #选择网络服务二,还需要重启3层服务
    service neutron-l3-agent restart
     
    6.2. 安装配置计算节点
    计算节点负责处理实例的连接和安全组。
     
    6.2.1. 安装配置组件
    1、安装组件
    apt install neutron-linuxbridge-agent
     
    2、配置通用组件,编辑/etc/neutron/neutron.conf
    [database]
    [DEFAULT]
    transport_url=rabbit://openstack:RABBIT_PASS@controller
     
    [DEFAULT]
    auth_strategy=keystone
     
    [keystone_authtoken]
    auth_uri=http://controller:5000
    auth_url=http://controller:35357
    memcached_servers=controller:11211
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    project_name=service
    username=neutron
    password=NEUTRON_PASS
     
    6.2.2.部署Self-service网络
    1、在计算节点上也配置网络选项2:Self-service networks,编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
    [linux_bridge]
    #PROVIDER_INTERFACE_NAME是底层provider物理网络接口,网卡2的名称
    physical_interface_mappings=provider:PROVIDER_INTERFACE_NAME
     
    #OVERLAY_INTERFACE_IP_ADDRESS是物理网络地址,即计算节点的IP地址
    [vxlan]
    enable_vxlan = true
    local_ip = OVERLAY_INTERFACE_IP_ADDRESS
    l2_population = true
     
    [securitygroup]
    # ... enable_security_group = true
    firewall_driver =
    neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
     
    2、配置计算服务使用网络服务,编辑/etc/nova/nova.conf
    [neutron]
    url=http://controller:9696
    auth_url=http://controller:35357
    auth_type=password
    project_domain_name=default
    user_domain_name=default
    region_name=RegionOne
    project_name=service
    username=neutron
    password=neutron
     
    3、完成安装,重启计算服务
    service nova-compute restart service neutron-linuxbridge-agent restart
     
    4、验证安装,在控制节点执行:
    . admin-openrc openstack extension list --network
     
    查看neutron服务的agent是否都启动,理论上控制节点上有4个agent,计算节点上各有1个:
    . admin-openrc openstack network agent list
     
    7 Dashboard
    7.1. 安装配置
    1、将 Dashboard安装在控制节点上,执行以下命令安装组件:
    apt install openstack-dashboard
     
    2、编辑/etc/openstack-dashboard/local_settings.py
    OPENSTACK_HOST="controller"
    ##所有主机都可以访问
    ALLOWED_HOSTS=‘*’
     
    SESSION_ENGINE='django.contrib.sessions.backends.cache'
    CACHES={
    'default': {
    'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION':'controller:11211',
    }
    }
     
    #启用第三版认证
    API OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" %
    OPENSTACK_HOST
     
    #配置为支持域
    OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
     
    #配置API版本 OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
    }
     
    #通过dashboard创建的用户的默认域为default
    OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
     
    #通过dashboard创建的用户默认角色为user
    OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
     
    3、重新加载web 服务器配置
    service apache2 reload
     
    7.2. 验证
    1、登录http://controller/horizon,查看dashboard页面,确认dashboard安装成功。默认域为default,可以使用admin用户登录,也可以实验demo用户登录。
    访问horizon,报错500,网上解决方法如下
     cd /var/lib/openstack-dashboard/
    ls –ltrh
    chown www-data:www-data /var/lib/openstack-dashboard/secret_key
    ls –ltrh
    service apache2 reload
     
    2、horizon页面出来,输入用户名和密码,报错如下:
    查看/var/log/apache2/error.log日志,错误信息
    “RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable”
     
    解决方法:
    1)、修改/etc/openstack-dashboard/local_settings.py,
    将‘SESSION_ENGINE = 'django.contrib.sessions.backends.cache'改成 ’SESSION_ENGINE = 'django.contrib.sessions.backends.file'
     
    2)、重新加载web 服务器配置
    service apache2 reload
     
    3、登录控制面板后创建flavor、创建实例,访问实例控制器,发现无法连接。因为vnc地址是127.0.0.1,而不是controller IP。
    解决方法:
    1)、修改controller上的/etc/nova/nova.conf
    novncproxy_base_url=http://$my_ip:6080/vnc_auto.html
    2)、修改computer上的/etc/nova/nova.conf
    novncproxy_base_url=http://172.171.3.20:6080/vnc_auto.html
    3)、重启nova相关服务
    #控制节点
    service nova-api restart
    service nova-consoleauth restart
    service nova-scheduler restart
    service nova-conductor restart
    service nova-novncproxy restart
     
    #计算节点
    service nova-compute restart
  • 相关阅读:
    Leetcode: 1425
    Leetcode: 1508 Range Sum of Sorted Subarray Sums
    Leetcode: 1353. Maximum Number of Events That Can Be Attended
    Leetcode: 1424. Diagonal Traverse II
    Leetcode: 825. Friends Of Appropriate Ages
    非递归实现二叉树的前序,中序,后序遍历
    TCP协议详解
    Linux常见命令
    C++基础笔记
    指针和引用的区别
  • 原文地址:https://www.cnblogs.com/zgqbky/p/13137709.html
Copyright © 2020-2023  润新知