openstack(mitaka)四--构建私有网络、块存储、镜像封装

目录

一、构建私有网络

1 配置控制节点的私有网络

 2 配置计算节点的私有网络

二、 构建块存储设备

1 配置控制节点

2 安装并配置块节点

三、镜像封装


一、构建私有网络

根据第一章节配置时设置的共有网络,现在共有网络上进行添加

1 配置控制节点的私有网络

私有网络主要用于实现网络隔离,外部访问私有网络时,需要申请浮点IP,进行备案

##配置`/etc/neutron/neutron.conf`` 文件并完成如下操作:
------------------------------------------------------
[DEFAULT]      ---在[DEFAULT]部分,启用路由服务和重叠的IP地址
....
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

...   <其他内容不变>

------------------------------------------------------

##配置 Modular Layer 2 (ML2) 插件,ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施。
##配置/etc/neutron/plugins/ml2/ml2_conf.ini
------------------------------------------------------
[ml2]
...
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security

[ml2_type_flat]
...
flat_networks = provider

[ml2_type_vxlan]            --为私有网络配置VXLAN网络识别的网络范围
...
vni_ranges = 1:1000

[securitygroup]
...
enable_ipset = True
------------------------------------------------------

##Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规
##配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
------------------------------------------------------
[linux_bridge]
physical_interface_mappings = provider:ens33

[vxlan]
enable_vxlan = True
local_ip = 192.168.19.71
l2_population = True

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

##配置layer-3代理--Layer-3代理为私有虚拟网络提供路由和NAT服务
##编辑``/etc/neutron/l3_agent.ini``文件并完成以下操作:
------------------------------------------------------
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge =
------------------------------------------------------

##配置DHCP代理
##编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
------------------------------------------------------
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
------------------------------------------------------

##重启网络服务
systemctl restart neutron-server.service netutron-linuxbridge-agent.service

 2 配置计算节点的私有网络

##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini`` 文件,建立layer-2虚无网络并且处理安全住规则操作:
--------------------------------------------------------
[vxlan]
enable_valan = True
local_ip = 192.168.19.72
l2_population = True
--------------------------------------------------------

##重启Linuxbridge代理
systemctl restart neutron-linuxbridge-agent.service

##接下来配置Dashboard,编辑文件 /etc/openstack-dashboard/local_settings
--------------------------------------------------------
OPENSTACK_NEUTRON_NETWORK = {            --打开支持3层网络服务    
    ...
    'enable_router': True,
    'enable_quotas': True,
    'enable_distributed_router': True,
    'enable_ha_router': True,
    'enable_lb': True,
    'enable_firewall': True,
    'enable_': True,
    'enable_fip_topology_check': True,
}                  
--------------------------------------------------------

##启动web服务以及会话会话存储
systemctl restart httpd.service mecached.service

同样我们可以在web界面进行访问,通过图形化页面进行网络构建,这里不进行具体阐述。

二、 构建块存储设备

        OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。

块存储服务通常包含下列组件:

    cinder-api:
    接受API请求,并将其路由到cinder-volume执行。
    cinder-volume:
    与块存储服务和例如cinder-scheduler的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。cinder-volume服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。
    cinder-scheduler守护进程:
    选择最优存储提供节点来创建卷。其与nova-scheduler组件类似。
    cinder-backup守护进程:
    cinder-backup服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume服务,它与多种存储提供者在驱动架构下进行交互。
    消息队列:
    在块存储的进程之间路由信息。
 

【环境】创建最基础的虚拟机block1,设置20G的虚拟磁盘,设置域名解析,加入到集群中

1 配置控制节点

        在控制节点上安装和配置块设备存储服务,即 cinder。这个服务需要至少一个额外的存储节点,以向实例提供卷。在安装和配置块存储服务之前,必须创建数据库、服务证书和API端点。

##先决条件:
1 构建数据库
    ##以 root 用户连接到数据库服务器:
        mysql -u root -p root

    ##创建cinder数据库:
        CREATE DATABASE cinder;

    ##允许 cinder 数据库合适的访问权限:
    GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
    GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

2 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    . admin-openrc

3 要创建服务证书
    ##创建一个 cinder 用户:
        openstack user create --domain default --password-cinder cinder

    ##添加 admin 角色到 cinder 用户上:
        openstack role add --project service --user cinder admin

    ##创建 cinder 和 cinderv2 服务实体:
        openstack service create --name cinder --description "OpenStack Block Storage" volume

        openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

4 创建块设备存储服务的 API 入口点:
        openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s

        openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s

        openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s

        openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s

        openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

        openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

 

##安全并配置组件
1 安装软件包
    yum install openstack-cinder

2 编辑 /etc/cinder/cinder.conf,同时完成如下动作:
----------------------------------------------------------------
[database] 
...
connection = mysql+pymysql://cinder:cinder@controller/cinder

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.17.71

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 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 = cinder
password = cinder

[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

3 初始化块设备的数据库
 su -s /bin/sh -c "cinder-manage db sync" cinder

----------------------------------------------------------------
##配置计算节点以使用块设备存储
1 编辑文件 /etc/nova/nova.conf 并添加如下到其中:
----------------------------------------------------
[cinder]
os_region_name = RegionOne
----------------------------------------------------
##完成安装
1 重启API服务
     systemctl restart openstack-nova-api.service

2 启动块设备并设置为开机自启
     systemctl enable --now openstack-cinder-api.service openstack-cinder-scheduler.service

2 安装并配置块节点

1 安装支持的工具包
    ##安装lvm包:
         yum install lvm2

    ##启动LVM的metadata服务并且设置该服务随系统启动:
        systemctl enable --now lvm2-lvmetad.service

2 创建LVM物理卷/dev/sdb
        pvcreate /dev/sdb

3 创建 LVM 卷组 cinder-volumes
        vgcreate cinder-volumes /dev/sdb
4 只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:
-------------------------------------------------------
devices {
...
filter = [ "a/sdb/", "r/.*/"]
-------------------------------------------------------
    ##如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上 /etc/lvm/lvm.conf 文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果``/dev/sda`` 设备包含操作系统:
-------------------------------------------------------

filter = [ "a/sdb/", "r/.*/"]
-------------------------------------------------------
##安全并配置组件
1 安装软件包
 yum install openstack-cinder targetcli python-keystone

2 编辑 /etc/cinder/cinder.conf,同时完成如下动作:
------------------------------------------------------------
[database]
...
connection = mysql+pymysql://cinder:cinder@controller/cinder

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.17.72
enabled_backends = lvm
glance_api_servers = http://controller:9292        --配置镜像服务 API 的位置

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 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 = cinder
password = cinder

[lvm]     --配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp
------------------------------------------------------------
##完成安装
 systemctl enable --enable openstack-cinder-volume.service target.service
##验证操作
1 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    . admin-openrc

2 列出服务组件以验证是否每个进程都成功启动:
    inder service-list

 【注】卷存在热拉伸的问题,在配置过程中需要注意注意卷在挂在时的文件格式和拉伸时的方式。

同样我们也可以通过访问图形节点进行卷的挂载。

三、镜像封装

官网各种系统封装

        这里我们一CentOS为例,去封装一个系统。当然官方也有封装好的可以提供使用:

CentOS Cloud images下载

##自己封装:
1 下载一个需要封装的系统,并进行安装过程
    ##这里不做具体阐述,可根据自己的需求进行下载和安装
-----------------------------------------------
区别:
    1 设置selinux开机禁用
     开机页面-->e ctrl+x 在系统行设置selinux=0

    2 配置selinux 的配置文件
        vi /etc/sysconfig/selinux 
        +++++++++++++++++++++
            SELINUX=disabled
        +++++++++++++++++++++
    3 关闭防火墙
        systemctl disable --now firewalld
    4 配置网卡信息:
        vi /etc/sysconfig/network-scripts/ifcfg-ens33
        +++++++++++++++++++++
          TYPE=Ethernet
          BOOTROTO=dhpc
          DEVICE=ens33
          ONBOOT=yes
        +++++++++++++++++++++
    5 添加一个新的IP
        ip addr add 197.169.17.0/24 /dev/eth0
-----------------------------------------------

##安装 ACPI 服务--->要使管理程序能够重新启动或关闭实例
    yum install acpid
    systemctl enable acpid

##配置获取元数据-->实例必须与元数据服务交互,以便在启动时执行几个任务。例如,实例必须获取ssh公钥并运行用户数据脚本。要确保实例执行这些任务,需要安装:
##安装一个cloud-initRPM--Ubuntu cloud-init包的一个端口。这是推荐的方法
    yum install cloud-init

##cloud-utis-growpart,允许分区调整大小为了正确调整根分区的大小,其中包含允许使用cloud-init调整磁盘大小的适当工具
    yum install cloud-utils-growpart

##cloud-init 通过编辑/etc/cloud/cloud.cfg文件并添加具有不同用户的行来更改所用帐户的名称。
---------------------------------------------
users:
  - name: admin
    (...)
---------------------------------------------

##禁用 zeroconf 路由--要让实例访问元数据服务
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network

##配置控制台
##编辑/etc/default/grub文件并配置 GRUB_CMDLINE_LINUX选项。删除 并添加到选项。
---------------------------------------------------
rhgb quietconsole=tty0 console=ttyS0,115200n8
-----------------------------------------------------

##保存上述修改:
grub2-mkconfig -o /boot/grub2/grub.cfg

##关闭实例
poweroff

##清理(​​删除 MAC 地址详细信息)
virt-sysprep -d centos

##压缩母镜像
virt-sparsify --compress centos.qcows /var/tmp/images

##取消定义 libvirt 域        --libvirt不在管理
virsh undefine centos

##镜像上传:使用qemu-img create命令创建的底层图像文件 已准备好上传

【注】当系统中现有的镜像模式和当前自己封装的镜像不匹配时,可以使用admin用户进行自行配置 。

openstack(mitaka)四--构建私有网络、块存储、镜像封装_第1张图片

你可能感兴趣的:(openstack,网络,openstack,linux)