运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
K8S实践指南

K8S实践指南

Docker和Kubernetes实践指南(每周更新)
新运维课堂

新运维课堂

全新体系化课程,开启运维新征程!

openstack基于单一扁平网络之上的vlan网络配置问题?

OpenStackzuoguocai 回复了问题 • 3 人关注 • 3 个回复 • 2714 次浏览 • 2019-10-29 21:11 • 来自相关话题

kolla-ansible安装openstack高可用企业级集群

OpenStackweillee 发表了文章 • 0 个评论 • 1138 次浏览 • 2019-05-03 12:26 • 来自相关话题

一.环境准备1.hosts设置 每台设备两块网卡: 第一块:NAT模式,用于下载软件包,设置好IP可以上网 第二块:桥接模式,用于External网络,用于虚拟机连接外部网络,不用设置IP   hos ...查看全部
一.环境准备1.hosts设置
每台设备两块网卡:
第一块:NAT模式,用于下载软件包,设置好IP可以上网
第二块:桥接模式,用于External网络,用于虚拟机连接外部网络,不用设置IP
 
hosts:hosteth0eth1deploy9.110.187.130 controller019.110.187.131不需要IPcontroller029.110.187.132不需要IPcompute019.110.187.133不需要IPcompute029.110.187.134不需要IPstorage9.110.187.135不需要IP2.ssh免密登录
ssh-keygen
ssh-copy-id root@controller01
ssh-copy-id root@controller02
ssh-copy-id root@compute01
ssh-copy-id root@compute02
ssh-copy-id root@storage
3.存储节点配置
  1. 要启动cinder存储服务,需先添加一块新的硬盘,然后创建pv、vg

[root@storage ~]# pvcreate /dev/sdb
[root@storage ~]# vgcreate cinder-volumes /dev/sdb //vg名取名为 cinder-volumes,这里主要跟 kolla配置文件里vg名一致

  1. 只允许vm实例访问块存储卷,对LVM可能出现异常做设置

vim /etc/lvm/lvm.conf
#修改 devices 下面的,有多少块硬盘就写多少块,如果不想使用系统盘,则不写a|sda
filter = [ "a|sda|", "a|sdb|", "r|.*|" ]

#重启lvm服务
systemctl restart lvm2-lvmetad.service
4.配置国内PIP源
所有节点都需要配置
mkdir ~/.pip

cat << EOF > ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
EOF
5.安装PIP
#安装依赖
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python

#安装PIP
yum install -y python-pip
pip install --upgrade pip
6.安装docker
  1. 所有节点都安装

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce

  1. 配置Docker共享挂载

mkdir /etc/systemd/system/docker.service.d 
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF

  1. 使用阿里加速地址

mkdir -p /etc/docker

systemctl daemon-reload && systemctl enable docker && systemctl restart docker
systemctl status docker
二.部署节点安装1.安装docker模块
pip install docker   //这个其它节点也需要安装,否则后面会报错
2.ansible安装
yum install -y ansible
pip install -U ansible
3.安装kolla和kolla-ansible
  • Kolla-Ansible 可以从pip安装,也可以从git安装,这里演示从pip安装
pip install kolla kolla-ansible

错误解决方案[list=1]

  • Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
  • 解决:强制更新
    pip install --ignore-installed PyYAML
    [list=1]
  • 如果出现
    requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible.
    错误,则强制更新
    requets
  • pip install --ignore-installed requests

    • 配置kolla-ansible1)拷贝globals.yml 和passwords.yml 到 /etc/kolla 目录
      cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
      2)拷贝kolla-ansible的主机清单文件(all-in-one和multinode)
      cp /usr/share/kolla-ansible/ansible/inventory/* /home/​

    注:如果是在虚拟机里再启动虚拟机,那么需要把virt_type=qemu,默认是kvm

    mkdir -p /etc/kolla/config/nova cat << EOF > /etc/kolla/config/nova/nova-compute.conf [libvirt] virt_type=qemu cpu_mode = none EOF

    4.生成密码文件
    kolla-genpwd
    修改下面字段,使用方便的密码
    vim /etc/kolla/passwords.yml    keystone_admin_password: devops
    5.修改配置文件[list=1]
  • grep -Ev "^$|^[#;]" /etc/kolla/globals.yml
  • kolla_base_distro: "centos"kolla_install_type: "source"openstack_release: "rocky"kolla_internal_vip_address: "9.110.187.180"network_interface: "eth0"api_interface: "{{ network_interface }}"neutron_external_interface: "eth1"neutron_plugin_agent: "openvswitch"enable_cinder: "yes"enable_cinder_backend_iscsi: "yes"enable_cinder_backend_lvm: "no"enable_haproxy: "yes"enable_heat: "yes"glance_enable_rolling_upgrade: "no"ironic_dnsmasq_dhcp_range:tempest_image_id:tempest_flavor_ref_id:tempest_public_network_id:tempest_floating_network_name:
    [list=1]
  • 编辑/home/multinode文件
  • [control]controller01controller02​[network]controller01controller02​[inner-compute]​[external-compute]compute01compute02​[compute:children]inner-computeexternal-compute​[monitoring]deploy​[storage]storage​[deployment]localhost       ansible_connection=local........
    6.网关配置这里physnet1是对外网络的名字,在dashboard里创建供应商网络的名字要和这里对应vim /usr/share/kolla-ansible/ansible/roles/neutron/templates/ml2_conf.ini.j2
    [ml2_type_vlan]{% if enable_ironic | bool %}network_vlan_ranges = physnet1{% else %}network_vlan_ranges = physnet1{% endif %}
     三.openstack集群安装1.提前拉取镜像
    kolla-ansible -i ./multinode pull -vvv
    2.确认inventory配置文件是否正确
    ansible -m ping all -i ./multinode
    3.Bootstrap服务的依赖安装
    kolla-ansible -i ./multinode bootstrap-servers
    4.检查
    kolla-ansible -i ./multinode prechecks
    5.部署
    kolla-ansible -i ./multinode deploy​注:可以加-vvv,显示更多
    6.使用openstack
    • 生成环境变量和脚本
    kolla-ansible -i ./multinode post-deploy此时会在/etc/kolla下面生成admin-openrc.sh脚本,执行一下
    至此multinodes部署完成,浏览器输入外网访问地址:http://9.110.187.180,即可访问Openstack的登陆页面,用户名和密码都是之前设置的 
    • 各节点上服务常用目录

    /etc/kolla 服务配置目录
    /var/lib/docker/volumes/kolla_logs/_data 服务日志目录
    /var/lib/docker/volumes 服务数据映射的目录销毁openstack
    kolla-ansible destroy -i ./multinode  --yes-i-really-really-mean-it

     

    salt '*' state.highstate 报错找不到文件,环境如下No Top file or master_tops data matches found.

    OpenStackAlvins 回复了问题 • 2 人关注 • 1 个回复 • 2561 次浏览 • 2018-07-26 22:03 • 来自相关话题

    从虚拟机无法启动(HTTP500)到rabbitMQ的错误:Error: unable to connect to node 'rabbit@linux-node1': nodedown

    OpenStackbingo4933 回复了问题 • 3 人关注 • 5 个回复 • 6396 次浏览 • 2018-07-18 16:45 • 来自相关话题

    OpenStack用Floating IP在IP-MAC绑定环境下实现外网访问

    回复

    OpenStackagoodman 发起了问题 • 1 人关注 • 0 个回复 • 1701 次浏览 • 2018-06-29 18:38 • 来自相关话题

    require删除指定后,salt安装仍然报指定需求没有找到

    回复

    OpenStack走在路上的人 回复了问题 • 1 人关注 • 1 个回复 • 1595 次浏览 • 2018-05-10 18:27 • 来自相关话题

    基于OpenStack构建企业私有云(8)Cinder

    OpenStack赵班长 发表了文章 • 2 个评论 • 2310 次浏览 • 2018-04-07 18:59 • 来自相关话题

    Cinder是OpenStack中存储虚拟化的组件,用来存储虚拟机镜像。OpenStack从Folsom版本开始使用Cinder替换原来的Nova-Volume服务,为OpenStack云平台提供块存储服务。 目前Cinder支持各类开源和商业的存 ...查看全部
    Cinder是OpenStack中存储虚拟化的组件,用来存储虚拟机镜像。OpenStack从Folsom版本开始使用Cinder替换原来的Nova-Volume服务,为OpenStack云平台提供块存储服务。
    目前Cinder支持各类开源和商业的存储系统。目前开源的支持通过其配置文件可以看到支持:  Nexenta、GlusterFS、NFS、Cepf、ISCSI等。

     
    控制节点部署
    1.Cinder安装
    [root@linux-node1 ~]# yum install -y openstack-cinder

    2.数据库配置
    [root@linux-node1 ~]# vim /etc/cinder/cinder.conf
    #在 [database] 部分,配置数据库访问。
    connection=mysql+pymysql://cinder:cinder@192.168.56.11/cinder
    同步数据库
    [root@linux-node1 ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
    验证数据库状态
    [root@linux-node1 ~]# mysql -h 192.168.56.11 -ucinder -pcinder -e "use cinder;show tables;"

    3.Keystone相关配置
    [root@linux-node1 ~]# vim /etc/cinder/cinder.conf
    [DEFAULT]
    auth_strategy=keystone
    [keystone_authtoken]
    auth_uri = http://192.168.56.11:5000
    auth_url = http://192.168.56.11:35357
    memcached_servers = 192.168.56.11:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = cinder
    password = cinder



    4.RabbitMQ相关配置
    [root@linux-node1 ~]# vim /etc/cinder/cinder.conf
    [DEFAULT]
    transport_url = rabbit://openstack:openstack@192.168.56.11

    5.其它配置
    [oslo_concurrency] 部分,配置锁路径:
    [oslo_concurrency]
    lock_path = /var/lib/cinder/tmp

    6.配置Nova以使用块设备存储,注意所有
        编辑文件 /etc/nova/nova.conf 并添加如下到其中:
    [cinder]
    os_region_name = RegionOne

    7.重启nova-api服务
    [root@linux-node1 ~]# systemctl restart openstack-nova-api.service

    8.启动cinder服务,并设置为开机自动启动。
    # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
    # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

    9.Cinder注册Service和Endpoint
    # openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
    # openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
    # openstack endpoint create --region RegionOne \
    volumev2 public http://192.168.56.11:8776/v2/%\(project_id\)s
    # openstack endpoint create --region RegionOne \
    volumev2 internal http://192.168.56.11:8776/v2/%\(project_id\)s
    # openstack endpoint create --region RegionOne \
    volumev2 admin http://192.168.56.11:8776/v2/%\(project_id\)s
     
     
    # openstack endpoint create --region RegionOne \
    volumev3 public http://192.168.56.11:8776/v3/%\(project_id\)s
    # openstack endpoint create --region RegionOne \
    volumev3 internal http://192.168.56.11:8776/v3/%\(project_id\)s
    # openstack endpoint create --region RegionOne \
    volumev3 admin http://192.168.56.11:8776/v3/%\(project_id\)s

    存储节点配置
    对于CentOS环境,默认是已经安装了LVM。如果没有可以使用以下命令安装并启动。
        安装 LVM 包:
    [root@linux-node1 ~]# yum install -y lvm2 device-mapper-persistent-data

        启动LVM的metadata服务并且设置该服务随系统启动:
    [root@linux-node1 ~]# systemctl enable lvm2-lvmetad.service
    [root@linux-node1 ~]# systemctl start lvm2-lvmetad.service

    把/dev/sdb创建为LVM的物理卷:
    [root@linux-node2 ~]# pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created


    创建名为cinder-volumes的逻辑卷组
    [root@linux-node2 ~]# vgcreate cinder-volumes /dev/sdb
    Volume group "cinder-volumes" successfully created
    [root@linux-node2 ~]# vim /etc/lvm/lvm.conf
        在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:
        devices {
        ...
        filter = [ "a/sdb/", "r/.*/"]
        filter = [ "a/sda/", "a/sdb/", "r/.*/"]
        filter = [ "a/sda/", "r/.*/"]


    存储节点安装

       存储节点安装和控制节点类型,还是分为两步:
    1.    软件安装。
    2.    从控制节点SCP配置文件。
    安装isci-target和cinder
    [root@linux-node2 ~]# yum install -y openstack-cinder targetcli python-keystone

    同步控制节点配置文件
    由于存储节点大多数配置和控制节点相同,可以直接使用控制节点配置好的cinder.conf。再此基础上进行小的变动。
    [root@linux-node1 ~]# scp /etc/cinder/cinder.conf 192.168.56.12:/etc/cinder/

    设置Cinder后端驱动
    [root@linux-node2 ~]# vim /etc/cinder/cinder.conf
    [lvm]
    volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
    volume_group = cinder-volumes
    iscsi_protocol = iscsi
    iscsi_helper = lioadm
    volume_backend_name=iSCSI-Storage

    在 [DEFAULT] 部分,启用 LVM 后端:
    [DEFAULT]
    ...
    enabled_backends = lvm


    [DEFAULT]
    glance_api_servers = http://192.168.56.11:9292

    启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
     # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service

     

    基于OpenStack创建企业私有云(7)Horizon

    OpenStack赵班长 发表了文章 • 1 个评论 • 2261 次浏览 • 2018-04-06 23:01 • 来自相关话题

    Cinder是OpenStack中存储虚拟化的组件,用来存储虚拟机镜像。OpenStack从Folsom版本开始使用Cinder替换原来的Nova-Volume服务,为OpenStack云平台提供块存储服务。 目前Cinder支持各类开源和商业的存 ...查看全部
    Cinder是OpenStack中存储虚拟化的组件,用来存储虚拟机镜像。OpenStack从Folsom版本开始使用Cinder替换原来的Nova-Volume服务,为OpenStack云平台提供块存储服务。
    目前Cinder支持各类开源和商业的存储系统。目前开源的支持通过其配置文件可以看到支持:  Nexenta、GlusterFS、NFS、Cepf、ISCSI等。

     
     
    1.安装Horizon
    [root@linux-node2 ~]# yum install -y openstack-dashboard

    2.Horizon配置
    [root@linux-node2 ~]# vim /etc/openstack-dashboard/local_settings
    OPENSTACK_HOST = "192.168.56.11"
    #允许所有主机访问
    ALLOWED_HOSTS = ['*', ]
    #设置API版本
    OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "volume": 2,
    "compute": 2,
    }
    开启多域支持
    OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
    设置默认的域
    OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
    #设置Keystone地址
    OPENSTACK_HOST = "192.168.56.11"
    OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
    #为通过仪表盘创建的用户配置默认的 user 角色
    OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

    #设置Session存储到Memcached
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
    CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION': '192.168.56.11:11211',
    }
    }
    #启用Web界面上修改密码
    OPENSTACK_HYPERVISOR_FEATURES = {
    'can_set_mount_point': True,
    'can_set_password': True,
    'requires_keypair': False,
    }
    #设置时区
    TIME_ZONE = "Asia/Shanghai"
    #禁用自服务网络的一些高级特性
    OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
    }

    3.启动服务
    [root@linux-node2 ~]# systemctl enable httpd.service
    [root@linux-node2 ~]# systemctl restart httpd.service

    好的,现在你就可以使用http://192.168.56.12/dashaboard来访问仪表盘了。用户名和密码可以使用admin或者demo。需要你亲自来体验他们到底有什么不同。

    基于OpenStack构建企业私有云(6)创建第一台云主机

    OpenStack赵班长 发表了文章 • 1 个评论 • 2573 次浏览 • 2018-04-06 22:56 • 来自相关话题

     好的,到目前为止,你已经完成了启动一台虚拟机所有的必备条件。 MySQL:为各个服务提供数据存储RabbitMQ:为各个服务之间通信提供交通枢纽KeyStone:为各个服务器之间通信提供认证和服务注册Glance:为虚拟机提供镜像管理Nova:为 ...查看全部
     好的,到目前为止,你已经完成了启动一台虚拟机所有的必备条件。
    • MySQL:为各个服务提供数据存储
    • RabbitMQ:为各个服务之间通信提供交通枢纽
    • KeyStone:为各个服务器之间通信提供认证和服务注册
    • Glance:为虚拟机提供镜像管理
    • Nova:为虚拟机提供计算资源
    • Neutron:为虚拟机提供网络资源。

        现在你可以着手启动一台虚拟机,剩下的OpenStack服务都可以认为是可选的,不过通常我们会用到Dashboard来通过Web界面来管理,后面的章节我们会讲到,现在我们使用命令来创建我们的第一台虚拟机。

     
     
    1.创建网络
    [root@linux-node1 ~]# openstack network create  --share --external \
    --provider-physical-network provider \
    --provider-network-type flat provider

    2.创建子网
    [root@linux-node1 ~]# openstack subnet create --network provider \
    --allocation-pool start=192.168.56.100,end=192.168.56.200 \
    --dns-nameserver 223.5.5.5 --gateway 192.168.56.2 \
    --subnet-range 192.168.56.0/24 provider-subnet

    3. 创建云主机类型
    [root@linux-node1 ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

    4.创建密钥对
    [root@linux-node1 ~]# source demo-openstack.sh
    [root@linux-node1 ~]# ssh-keygen -q -N ""
    [root@linux-node1 ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
    [root@linux-node1 ~]# openstack keypair list

    5.添加安全组规则
     [root@linux-node1 ~]# openstack security group rule create --proto icmp default
    [root@linux-node1 ~]# openstack security group rule create --proto tcp --dst-port 22 default

    启动实例
    [root@linux-node1 ~]# source demo-openstack.sh
    [root@linux-node1 ~]# openstack flavor list

    1.查看可用的镜像
    [root@linux-node1 ~]# openstack image list

    2.查看可用的网络
    [root@linux-node1 ~]# openstack network list

    3.查看可用的安全组
    [root@linux-node1 ~]# openstack security group list

    4.创建虚拟机
    [root@linux-node1 ~]# openstack server create --flavor m1.nano --image cirros \
    --nic net-id=5c4d0706-24cd-4d42-ba78-36a05b6c81c8 --security-group default \
    --key-name mykey demo-instance
    #注意指定网络的时候需要使用ID,而不是名称

    5.查看虚拟机
    [root@linux-node1 ~]# openstack server list
    [root@linux-node1 ~]# openstack console url show demo-instance


     

    基于OpenStack构建企业私有云(5)Neutron

    OpenStack赵班长 发表了文章 • 0 个评论 • 2358 次浏览 • 2018-04-06 18:08 • 来自相关话题

    OpenStack Networking Services(Neutron),OpenStack 网络服务,OpenStack核心项目之一,由早期的nova-network独立成一个子项目后演变而来,它为OpenStack提供了云计算环境下的虚拟网络功能。 ...查看全部
    OpenStack Networking Services(Neutron),OpenStack 网络服务,OpenStack核心项目之一,由早期的nova-network独立成一个子项目后演变而来,它为OpenStack提供了云计算环境下的虚拟网络功能。
    在OpenStack世界中,网络组件最初叫nova-network,nova-network实现简单,直接采用基于Linux内核的Linux网桥。由于少了很多层抽象,所以比较简单稳定算。但是它的不足之处是支持的插件少(只支持Linux网桥),支持的网络拓扑少(只支持flat, vlan)。

     
     
    1.Neutron安装
    [root@linux-node1 ~]# yum install -y openstack-neutron openstack-neutron-ml2 \
    openstack-neutron-linuxbridge ebtables

    2.Neutron数据库配置
    [root@linux-node1 ~]# vim /etc/neutron/neutron.conf
    [database]
    connection = mysql+pymysql://neutron:neutron@192.168.56.11:3306/neutron

    3.Keystone连接配置
    [DEFAULT]

    auth_strategy = keystone

    [keystone_authtoken]
    auth_uri = http://192.168.56.11:5000
    auth_url = http://192.168.56.11:35357
    memcached_servers = 192.168.56.11:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = neutron
    password = neutron

    4.RabbitMQ相关设置
    [root@linux-node1 ~]# vim /etc/neutron/neutron.conf
    [DEFAULT]
    transport_url = rabbit://openstack:openstack@192.168.56.11

    5.Neutron网络基础配置
    [DEFAULT]
    core_plugin = ml2
    service_plugins =

    6.网络拓扑变化Nova通知配置
    [DEFAULT]
    notify_nova_on_port_status_changes = True
    notify_nova_on_port_data_changes = True

    [nova]
    auth_url = http://192.168.56.11:35357
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    region_name = RegionOne
    project_name = service
    username = nova
    password = nova

    7.在 [oslo_concurrency] 部分,配置锁路径:
    [oslo_concurrency]
    lock_path = /var/lib/neutron/tmp

    8.Neutron ML2配置
    [root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
    [ml2]
    type_drivers = flat,vlan,gre,vxlan,geneve #支持多选,所以把所有的驱动都选择上。
    tenant_network_types = flat,vlan,gre,vxlan,geneve #支持多项,所以把所有的网络类型都选择上。
    mechanism_drivers = linuxbridge,openvswitch,l2population #选择插件驱动,支持多选,开源的有linuxbridge和openvswitch
    #启用端口安全扩展驱动
    extension_drivers = port_security,qos

    [ml2_type_flat]
    #设置网络提供
    flat_networks = provider

    [securitygroup]
    #启用ipset
    enable_ipset = True




    9.Neutron Linuxbridge配置
    [root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
    [linux_bridge]
    physical_interface_mappings = provider:eth0

    [vxlan]
    #禁止vxlan网络
    enable_vxlan = False

    [securitygroup]
    firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    enable_security_group = True





    10.Neutron DHCP-Agent配置
    [root@linux-node1 ~]# vim /etc/neutron/dhcp_agent.ini
    [DEFAULT]
    interface_driver = linuxbridge
    dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    enable_isolated_metadata = True





    11.Neutron metadata配置
       
    [root@linux-node1 ~]# vim /etc/neutron/metadata_agent.ini
    [DEFAULT]
    nova_metadata_host = 192.168.56.11

    metadata_proxy_shared_secret = unixhot.com

    12.Neutron相关配置在nova.conf
    [root@linux-node1 ~]# vim /etc/nova/nova.conf
    [neutron]
    url = http://192.168.56.11:9696
    auth_url = http://192.168.56.11:35357
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    region_name = RegionOne
    project_name = service
    username = neutron
    password = neutron
    service_metadata_proxy = True
    metadata_proxy_shared_secret = unixhot.com

    [root@linux-node1 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

    同步数据库
    [root@linux-node1 ~]# 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

    13.重启计算API 服务
    # systemctl restart openstack-nova-api.service

    启动网络服务并配置他们开机自启动。
    # systemctl enable neutron-server.service \
    neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
    neutron-metadata-agent.service
    # systemctl start neutron-server.service \
    neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
    neutron-metadata-agent.service

    14.Neutron服务注册
    # openstack service create --name neutron --description "OpenStack Networking" network
    创建endpoint
    # openstack endpoint create --region RegionOne network public http://192.168.56.11:9696
    # openstack endpoint create --region RegionOne network internal http://192.168.56.11:9696
    # openstack endpoint create --region RegionOne network admin http://192.168.56.11:9696

    15.测试Neutron安装
    [root@linux-node1 ~]# openstack network agent list

    Neutron计算节点部署

    安装软件包
     [root@linux-node2 ~]# yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables


    1.Keystone连接配置
    [root@linux-node2 ~]# vim /etc/neutron/neutron.conf
    [DEFAULT]

    auth_strategy = keystone

    [keystone_authtoken]
    auth_uri = http://192.168.56.11:5000
    auth_url = http://192.168.56.11:35357
    memcached_servers = 192.168.56.11:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = neutron
    password = neutron

    2.RabbitMQ相关设置
    [root@linux-node2 ~]# vim /etc/neutron/neutron.conf
    [DEFAULT]
    transport_url = rabbit://openstack:openstack@192.168.56.11
    #请注意是在DEFAULT配置栏目下,因为该配置文件有多个transport_url的配置

    3.锁路径
    [oslo_concurrency]
    lock_path = /var/lib/neutron/tmp

    4.配置LinuxBridge配置
    [root@linux-node1 ~]# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini 192.168.56.12:/etc/neutron/plugins/ml2/

    5.设置计算节点的nova.conf
    [root@linux-node2 ~]# vim /etc/nova/nova.conf
    [neutron]
    url = http://192.168.56.11:9696
    auth_url = http://192.168.56.11:35357
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    region_name = RegionOne
    project_name = service
    username = neutron
    password = neutron





    重启计算服务
    [root@linux-node2 ~]# systemctl restart openstack-nova-compute.service

    启动计算节点linuxbridge-agent
    [root@linux-node2 ~]# systemctl enable neutron-linuxbridge-agent.service
    [root@linux-node2 ~]# systemctl start neutron-linuxbridge-agent.service

    在控制节点上测试Neutron安装
    [root@linux-node1 ~]# source admin-openstack.sh
    [root@linux-node1 ~]# openstack network agent list

    看是否有linux-node2.example.com的Linux bridge agent