• CentOS7安装OpenStack-08.创建一个虚拟机实例


    8.0.neutron的两种虚拟网络

    1)Provider network(提供者网络)

    # 网络结构图参考:https://docs.openstack.org/install-guide/launch-instance-networks-provider.html

    简单理解就是与现有物理网络桥接起来的网络,网络结构图如下,

    在这种网络中,集群中的各个节点通过物理网络连接,节点内部通过L2(provider网桥/交换机)与物理网络进行连接,这个网络可以包括为实例提供IP地址的DHCP服务器。

    集群中的实例(虚拟机)通过Provider网络为其分配映射的tap端口与桥接网卡传输数据从而进行内外部通信,类似kvm虚拟机采用桥接模式使得网络结构,网络结构示意图如下:

    2)Self-service network(自服务网络)

    # 网络结构图参考:https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html

    类似阿里云的内部私有网络,可以让使用者自己构建一个内部使用对外隔离的网络,结构如下图:

    是在provider网络上的扩展,通过self-service网桥使用vxlan技术创建一个独立的网络,这个独立的网络也可以通过vxlan tunnels连接到物理网络进行数据传输

    网络连接拓扑图如下:

    8.1.创建provider提供者网络

    1)在控制节点上,创建网络接口

    # 加载 admin 凭证来获取管理员能执行的命令访问权限

    cd /server/tools/
    source keystone-admin-pass.sh
    openstack network create --share --external --provider-physical-network provider  --provider-network-type flat net_provider
    openstack network list

    # 附:旧版的命令(在这个版本中会少创建一些东西),可以参考

    neutron net-create --shared --provider:physical_network [自定义的物理网卡的名称] --provider:network_type flat(单一扁平网络) [创建的虚拟网络名称]
    neutron net-create --shared --provider:physical_network provider  --provider:network_type flat provider

    2)检查网络配置

    # 确认ml2_conf.ini以下配置选项

    # 上面的命令--provider-network-type flat网络名称provider与此对应

    vim /etc/neutron/plugins/ml2/ml2_conf.ini
    -----------------------------
    [ml2_type_flat]
    flat_networks = provider
    -----------------------------

    # 确认linuxbridge_agent.ini以下配置选项

    # 上面的命令--provider-physical-network provider于此对应,网卡注意要于此对应,控制节点的网卡名称

    vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
    -----------------------------
    [linux_bridge]
    physical_interface_mappings = provider:ens33
    -----------------------------

    3)创建provider子网

    # 标记的net_provider与上面的net_provider对应,相关联
    openstack subnet create --network net_provider --no-dhcp --allocation-pool start=192.168.182.210,end=192.168.182.220 --dns-nameserver 114.114.114.114 --gateway 192.168.182.2 --subnet-range 192.168.182.0/24 provider-subnet01
    # openstack subnet create --network net_provider --dhcp --subnet-range 192.168.182.0/24 provider-subnet02
    openstack subnet list

    8.2、创建m1.nano规格的主机

    #  默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像

    openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

    8.3、生成一个键值对

    1)导入租户``demo``的凭证

    cd /server/tools && source keystone-admin-pass.sh

    2)生成和添加秘钥对

    ssh-keygen -q -N "" -f ~/.ssh/id_rsa
    openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

    3)验证公钥的添加

    openstack keypair list

    8.4、增加安全组规则

    # 默认情况下, ``default``安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。

    # 添加规则到 default 安全组

    1)允许 ICMP (ping)

    openstack security group rule create --proto icmp default

    2)允许安全 shell (SSH) 的访问

    openstack security group rule create --proto tcp --dst-port 22 default

    8.5、启动一个实例(在公有网络上创建实例

    1)查看配置

    openstack flavor list
    openstack image list
    openstack network list
    openstack security group list

    2)创建实例(红色标注的,写自己的network ID,通过 `openstack network list`查看ID)

    openstack server create --flavor m1.nano --image cirros 
      --nic net-id=PROVIDER_NET_ID --security-group default 
      --key-name mykey provider-instance

    ==================================================================================================

    问题1:在计算节点上查看日志:/var/log/nova/nova-compute.log shows 

    No compute node record for host compute1: ComputeHostNotFound_Remote: Compute host compute1 could not be found.

    解决:在控制节点上执行

    [root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova 
    Found 2 cell mappings.
    Skipping cell0 since it does not contain hosts.
    Getting computes from cell 'cell1': c7e6974d-2af9-46e2-b463-aa606c205228
    Checking host mapping for compute host 'compute1': 90e3f7a9-e895-4052-b600-4695ffd858b1
    Creating host mapping for compute host 'compute1': 90e3f7a9-e895-4052-b600-4695ffd858b1
    Found 1 unmapped computes in cell: c7e6974d-2af9-46e2-b463-aa606c205228

    问题2:如果一直卡着不动了,则需要设置一下镜像的属性

    解决:修改硬盘属性为 ide,网卡属性为 e1000。问题解决!

    # 通过openstack image list 查看image_id
    openstack image set --property hw_disk_bus=ide --property hw_vif_model=e1000 <image_id>

    问题3:如果无法ping通ip

    解决:找到对应网络的subnet,把 dchp 功能启用,打对勾

    ==================================================================================================

    3)检查实例的状态

    openstack server list

     8.6、验证能否远程访问实例

     1)验证控制节点或者其他公有网络上的主机能否ping通实例

    ping -c 4 192.168.182.213

    2)在控制节点或其他公有网络上的主机使用 SSH远程访问实例

    ssh cirros@192.168.182.213

     8.7、快速新增一个计算节点

    1)配置主机名

    # 设置主机名
    hostnamectl set-hostname compute2
    # 添加controller域名解析 echo
    ' # controller 192.168.182.143 controller '>>/etc/hosts

    2)关闭防火墙和selinux

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl status firewalld.service
    
    setenforce 0
    getenforce
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
    grep SELINUX=disabled /etc/sysconfig/selinux

    3)在计算节点配置时间同步服务

    # 安装时间同步的软件包

    yum install chrony -y

    # 编辑配置文件确认有以下配置

    vim /etc/chrony.conf
    # 在计算节点上配置
    # 去掉原有的server
    server  192.168.182.143 iburst

    # 重启chronyd服务,并配置开机自启动

    systemctl restart chronyd.service
    systemctl status chronyd.service
    systemctl enable chronyd.service
    systemctl list-unit-files |grep chronyd.service

    # 设置时区,首次同步时间

    timedatectl set-timezone Asia/Shanghai
    chronyc sources
    timedatectl status

    4)配置相关yum源 

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    # 安装openstack-rocky的仓库

    yum install centos-release-openstack-rocky -y
    yum clean all
    yum makecache

    # 更新软件包

    yum update -y

    # 安装openstack客户端相关软件

    yum install python-openstackclient openstack-selinux -y

    5)安装nova计算节点相关软件包

    # 计算节点安装nova软件包

    yum install openstack-nova-compute python-openstackclient openstack-utils -y

    # 快速修改配置文件(/etc/nova/nova.conf),注意修改成自己的ip

    openstack-config --set  /etc/nova/nova.conf DEFAULT my_ip 192.168.182.128
    openstack-config --set  /etc/nova/nova.conf DEFAULT use_neutron True
    openstack-config --set  /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
    openstack-config --set  /etc/nova/nova.conf DEFAULT enabled_apis  osapi_compute,metadata
    openstack-config --set  /etc/nova/nova.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
    openstack-config --set  /etc/nova/nova.conf api auth_strategy  keystone 
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken auth_type password
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken project_domain_name default
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken user_domain_name default
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken project_name  service
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken username nova
    openstack-config --set  /etc/nova/nova.conf keystone_authtoken password nova
    openstack-config --set  /etc/nova/nova.conf vnc enabled True
    openstack-config --set  /etc/nova/nova.conf vnc server_listen 0.0.0.0
    openstack-config --set  /etc/nova/nova.conf vnc server_proxyclient_address  '$my_ip'
    openstack-config --set  /etc/nova/nova.conf vnc novncproxy_base_url  http://controller:6080/vnc_auto.html
    openstack-config --set  /etc/nova/nova.conf glance api_servers http://controller:9292
    openstack-config --set  /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
    openstack-config --set  /etc/nova/nova.conf placement region_name RegionOne
    openstack-config --set  /etc/nova/nova.conf placement project_domain_name Default
    openstack-config --set  /etc/nova/nova.conf placement project_name service
    openstack-config --set  /etc/nova/nova.conf placement auth_type password
    openstack-config --set  /etc/nova/nova.conf placement user_domain_name Default
    openstack-config --set  /etc/nova/nova.conf placement auth_url http://controller:5000/v3
    openstack-config --set  /etc/nova/nova.conf placement username placement
    openstack-config --set  /etc/nova/nova.conf placement password placement

    # 配置虚拟机的硬件加速

    # 首先确定您的计算节点是否支持虚拟机的硬件加速。

    egrep -c '(vmx|svm)' /proc/cpuinfo

    # 如果返回位0,表示计算节点不支持硬件加速,需要配置libvirt使用QEMU方式管理虚拟机,使用以下命令

    openstack-config --set  /etc/nova/nova.conf libvirt virt_type  qemu
    egrep -v "^#|^$" /etc/nova/nova.conf|grep 'virt_type'

    # 如果返回为其他值,表示计算节点支持硬件加速且不需要额外的配置,使用以下命令

    openstack-config --set  /etc/nova/nova.conf libvirt virt_type  kvm 
    egrep -v "^#|^$" /etc/nova/nova.conf|grep 'virt_type'

    # 启动nova相关服务,并配置为开机自启动

    systemctl start libvirtd.service openstack-nova-compute.service 
    systemctl status libvirtd.service openstack-nova-compute.service
    systemctl enable libvirtd.service openstack-nova-compute.service
    systemctl list-unit-files |grep libvirtd.service
    systemctl list-unit-files |grep openstack-nova-compute.service

    # 列表查看安装的nova服务组件(控制节点)

    openstack compute service list

    6)在计算节点安装neutron网络组件

    # 安装neutron组件

    yum install openstack-neutron-linuxbridge ebtables ipset -y

    # 快速配置/etc/neutron/neutron.conf

    openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
    openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri  http://controller:5000
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:5000
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password neutron
    openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

    # 快速配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:ens33
    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan false
    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

    # 注意:第一个选项physical_interface_mappings选项要配置计算节点自身的网卡名称provider:ens33

    7)配置nova计算服务与neutron网络服务协同工作

    # 快速配置/etc/nova/nova.conf

    openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
    openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:5000
    openstack-config --set /etc/nova/nova.conf neutron auth_type password
    openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
    openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
    openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
    openstack-config --set /etc/nova/nova.conf neutron project_name service 
    openstack-config --set /etc/nova/nova.conf neutron username neutron
    openstack-config --set /etc/nova/nova.conf neutron password neutron

    # 重启计算节点

    systemctl restart openstack-nova-compute.service
    systemctl status openstack-nova-compute.service

    # 启动neutron网络组件,并配置开机自启动

    systemctl restart neutron-linuxbridge-agent.service
    systemctl status neutron-linuxbridge-agent.service
    
    systemctl enable neutron-linuxbridge-agent.service
    systemctl list-unit-files |grep neutron* |grep enabled

    # 查看网络代理列表

    openstack network agent list
  • 相关阅读:
    【Docker】 CentOS7 安装 Docker 及其使用方法 ( 一 )
    js加密解密
    JSON.parse和eval()的区别
    复选框(全选/全不选/反选)
    圆形进度条
    C# JToken类,实现解析动态json数据、遍历、查找
    使IIS服务器支持下载 apk/ipa 安装包
    Python关键字
    C#泛型(二)泛型类
    C#泛型(一)泛型方法
  • 原文地址:https://www.cnblogs.com/liugp/p/12484120.html
Copyright © 2020-2023  润新知