美文网首页我用 LinuxLinuxLinux学习之路
Ubuntu16手动安装OpenStack——创建实例

Ubuntu16手动安装OpenStack——创建实例

作者: VoidKing | 来源:发表于2018-07-15 10:18 被阅读2次

    目标

    完成了《Ubuntu16手动安装OpenStack——neutron篇》,意味着keystone、glance、nova和neutron都已经安装完成,也就是说,openstack最小安装已经完成。在安装horizon、cinder和swift之前,我们先来通过命令行创建一个实例,验证一下之前的安装。

    主要参考OpenStack Queens : Add UsersOpenStack Queens : Add UsersOpenStack Queens : Boot Instances

    原文地址:https://www.voidking.com/2018/07/06/deve-ubuntu16-manual-openstack-instance/

    说明

    本文操作全部都是在控制节点。
    为了避免权限问题,建议切换到root用户进行操作(否则要加很多sudo)。
    sudo -i

    网卡配置

    参考Openstack的网卡设置和和OpenStack Networking Tutorial: Single-host FlatDHCPManager,配置eth2网卡。

    1、查看当前网络,ip add

    image

    route -nbrctl show

    image

    2、vim /etc/network/interfaces,添加:

    auto eth2
    iface eth2 inet manual
      up ifconfig $IFACE 0.0.0.0 up
      up ifconfig $IFACE promisc
    #iface eth2 inet manual
    #up ifconfig eth2 up
    

    3、启用网卡,ifup eth2

    创建子网

    1、vi /etc/neutron/plugins/ml2/ml2_conf.ini,如下修改:

    # line 181: add
    [ml2_type_flat]
    flat_networks = physnet1
    

    2、vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini,如下修改:

    # line 147: add
    [linux_bridge]
    physical_interface_mappings = physnet1:eth2
    # line 208: uncomment and change
    enable_vxlan = false
    

    3、重启neutron-linuxbridge-agent
    systemctl restart neutron-linuxbridge-agent

    4、获取projectID
    . admin-openrc

    projectID=$(openstack project list | grep service | awk '{print $2}')

    5、创建名为sharednet1的网络

    openstack network create --project $projectID \
    --share --provider-network-type flat --provider-physical-network physnet1 sharednet1
    
    image

    6、在sharednet1中创建子网10.0.0.0/24

    openstack subnet create subnet1 --network sharednet1 \
    --project $projectID --subnet-range 10.0.0.0/24 \
    --allocation-pool start=10.0.0.200,end=10.0.0.254 \
    --gateway 10.0.0.1 --dns-nameserver 10.0.0.10
    
    image

    7、查看网络
    openstack network list

    openstack subnet list

    image

    添加用户

    首先使admin环境生效,. admin-openrc

    1、添加siat项目
    openstack project create --domain default --description "SIAT Project" siat

    2、添加voidking用户,密码为openstack
    openstack user create --domain default --project siat --password openstack voidking

    3、添加clouduser角色
    openstack role create clouduser

    4、给voidking用户添加clouduser角色
    openstack role add --project siat --user voidking clouduser

    5、因为cirros需要的资源很少,所以创建一个类型模板m1.tiny
    openstack flavor create --id 0 --vcpus 1 --ram 256 --disk 5 m1.tiny

    image

    创建实例

    环境准备

    1、vi ~/voidkingrc,创建voidking环境脚本,内容如下:

    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    export OS_PROJECT_NAME=siat
    export OS_USERNAME=voidking
    export OS_PASSWORD=openstack
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    export PS1='\u@\h \W(keystone)\$ '
    

    2、使环境生效
    . voidkingrc

    3、查看类型模板
    openstack flavor list

    4、查看可用镜像
    openstack image list

    5、查看可用网络
    openstack network list

    image

    6、创建安全组
    openstack security group create secgroup01

    image

    7、查看安全组
    openstack security group list

    image

    8、创建ssh密钥
    ssh-keygen -q -N ""

    密钥文件保存在/home/root/.ssh/目录下。

    9、添加公钥
    openstack keypair create --public-key ~/.ssh/id_rsa.pub vkkey

    image

    10、查看公钥
    openstack keypair list

    创建实例

    1、给netID赋值
    netID=$(openstack network list | grep sharednet1 | awk '{ print $2 }')

    2、创建实例

    openstack server create --flavor m1.tiny \
    --image cirros --security-group secgroup01 \
    --nic net-id=$netID --key-name vkkey cirros0
    
    image

    3、查看实例
    openstack server list

    image

    如上图,已经成功启动实例,ip为10.0.0.206,nice。

    PS:删除实例命令,openstack server delete cirros0

    访问实例

    配置安全组的安全设置,以便使用SSH和ICMP进行访问。

    1、设置允许ICMP
    openstack security group rule create --protocol icmp --ingress secgroup01

    image

    2、设置允许ssh
    openstack security group rule create --protocol tcp --dst-port 22:22 secgroup01

    image

    3、查看安全组规则
    openstack security group rule list

    image

    4、访问测试
    ping 10.0.0.206 -c3

    ping不通,看来网络出了问题,等会再解决这个问题。

    5、查看vnc的url,并复制该url
    openstack console url show cirros0

    image

    6、url中的controller替换为192.168.56.110,在浏览器中打开


    image

    顺利访问,可以看到,cirros0的ip为192.168.56.102,难怪10.0.0.206无法ping通。

    控制节点上,ping 192.168.56.102,依然不通。
    vnc中,ping 192.168.56.110,也不通。

    网络问题

    网桥支持

    Configure the Linux bridge agent一节中,提到过要启用网桥支持,那就启用网桥试试。

    1、查看ip转发
    cat /proc/sys/net/ipv4/ip_forward
    如果值为0,那么改为1。

    2、启用网桥支持
    vim /etc/sysctl.conf,添加

    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    

    3、使配置生效
    sysctl -p

    修改后,依然无法ping通10.0.0.206。

    网卡配置

    1、查看ip
    ip add

    image
    如上图,和本文开始时相比,多了三个接口。

    2、查看网桥
    brctl show

    image

    3、vim /etc/network/interfaces,添加

    auto brqedda68f7-72
    iface brqedda68f7-72 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_stp off
    bridge_fd 0
    

    然后启用brqedda68f7-72端口,ifup brqedda68f7-72

    或者不配置interfaces,直接执行ifconfig brqedda68f7-72 10.0.0.1/24 up

    5、查看网络
    ip add

    route -n

    image

    不过,依然无法ping通10.0.0.206。毕竟,cirros0的ip不是10.0.0.206,而是192.168.56.102。这个ip,明显是通过VirtualBox分配的,和虚拟机在同一个网段。

    修改ip

    既然cirros0的ip不对,那就给它手动修改一下,好主意。
    1、通过vnc登录cirros0

    2、sudo vi /etc/network/interfaces,修改eth0的配置为:

    auto eth0
    iface eth0 inet static
    address 10.0.0.206
    netmask 255.255.255.0
    

    3、重启eth0
    sudo ifdown eth0

    sudo ifup eth0

    4、在控制节点测试连接
    ping 10.0.0.206 -c3

    image

    至此,问题解决。

    访问实例

    1、cirros当前只支持密码访问:
    ssh cirros@10.0.0.206,输入密码gocubsgo。

    登录后执行ls .ssh,并没有authorized_keys文件,看来创建实例时并没有注入密钥,不知道什么原因。

    2、在控制节点,添加密钥到cirros0
    ssh-copy-id -i .ssh/id_rsa.pub -p 22 cirros@10.0.0.206

    3、用密钥测试登录
    ssh cirros@10.0.0.206 -i .ssh/id_rsa

    登录成功。

    4、如果重启了控制节点,那么需要手动启动cirros0
    openstack server start cirros0

    5、vnc的token也会改变,所以要重新获取
    openstack console url show cirros0

    后记

    至此,已经完成了吗?想到一些问题:

    • cirros0理论上应该通过浮动ip进行访问,我们这种直接访问是闹哪样?
    • 以后每次创建实例,都要通过vnc重新配置ip?
    • 以后每次创建实例,都要手动添加密钥?

    也许是因为VirtualBox网卡分配不对,也许是因为在虚拟机中安装,也许是因为控制节点网络配置不对。。。不管了,反正创建实例完成,其他问题放在以后的文章中解决。

    相关文章

      网友评论

      • yezi_e316:按照楼主的方法,创建了实例。实例IP为:10.0.0.202。网卡配置后,直接执行ifconfig brqedda68f** 10.0.0.1/24 up,可以PING通。登录后执行ls .ssh,有authorized_keys文件。
        谢谢!
        yezi_e316:@VoidKing https://www.voidking.com/2018/08/02/deve-ubuntu16-kolla-openstack-all-in-one/这个地址怎么打不开了?

      本文标题:Ubuntu16手动安装OpenStack——创建实例

      本文链接:https://www.haomeiwen.com/subject/ootppftx.html