当前位置:   article > 正文

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

openstack mitaka镜像

目录

一、构建私有网络

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

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

二、 构建块存储设备

1 配置控制节点

2 安装并配置块节点

三、镜像封装


一、构建私有网络

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

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

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

  1. ##配置`/etc/neutron/neutron.conf`` 文件并完成如下操作:
  2. ------------------------------------------------------
  3. [DEFAULT] ---在[DEFAULT]部分,启用路由服务和重叠的IP地址
  4. ....
  5. core_plugin = ml2
  6. service_plugins = router
  7. allow_overlapping_ips = True
  8. ... <其他内容不变>
  9. ------------------------------------------------------
  10. ##配置 Modular Layer 2 (ML2) 插件,ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施。
  11. ##配置/etc/neutron/plugins/ml2/ml2_conf.ini
  12. ------------------------------------------------------
  13. [ml2]
  14. ...
  15. type_drivers = flat,vlan,vxlan
  16. tenant_network_types = vxlan
  17. mechanism_drivers = linuxbridge,l2population
  18. extension_drivers = port_security
  19. [ml2_type_flat]
  20. ...
  21. flat_networks = provider
  22. [ml2_type_vxlan] --为私有网络配置VXLAN网络识别的网络范围
  23. ...
  24. vni_ranges = 1:1000
  25. [securitygroup]
  26. ...
  27. enable_ipset = True
  28. ------------------------------------------------------
  29. ##Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规
  30. ##配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
  31. ------------------------------------------------------
  32. [linux_bridge]
  33. physical_interface_mappings = provider:ens33
  34. [vxlan]
  35. enable_vxlan = True
  36. local_ip = 192.168.19.71
  37. l2_population = True
  38. [securitygroup]
  39. ...
  40. enable_security_group = True
  41. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  42. ------------------------------------------------------
  43. ##配置layer-3代理--Layer-3代理为私有虚拟网络提供路由和NAT服务
  44. ##编辑``/etc/neutron/l3_agent.ini``文件并完成以下操作:
  45. ------------------------------------------------------
  46. [DEFAULT]
  47. ...
  48. interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  49. external_network_bridge =
  50. ------------------------------------------------------
  51. ##配置DHCP代理
  52. ##编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
  53. ------------------------------------------------------
  54. [DEFAULT]
  55. ...
  56. interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  57. dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  58. enable_isolated_metadata = True
  59. ------------------------------------------------------
  60. ##重启网络服务
  61. systemctl restart neutron-server.service netutron-linuxbridge-agent.service

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

  1. ##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini`` 文件,建立layer-2虚无网络并且处理安全住规则操作:
  2. --------------------------------------------------------
  3. [vxlan]
  4. enable_valan = True
  5. local_ip = 192.168.19.72
  6. l2_population = True
  7. --------------------------------------------------------
  8. ##重启Linuxbridge代理
  9. systemctl restart neutron-linuxbridge-agent.service
  10. ##接下来配置Dashboard,编辑文件 /etc/openstack-dashboard/local_settings
  11. --------------------------------------------------------
  12. OPENSTACK_NEUTRON_NETWORK = { --打开支持3层网络服务
  13. ...
  14. 'enable_router': True,
  15. 'enable_quotas': True,
  16. 'enable_distributed_router': True,
  17. 'enable_ha_router': True,
  18. 'enable_lb': True,
  19. 'enable_firewall': True,
  20. 'enable_vpn': True,
  21. 'enable_fip_topology_check': True,
  22. }
  23. --------------------------------------------------------
  24. ##启动web服务以及会话会话存储
  25. 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. ##先决条件:
  2. 1 构建数据库
  3. ##以 root 用户连接到数据库服务器:
  4. mysql -u root -p root
  5. ##创建cinder数据库:
  6. CREATE DATABASE cinder;
  7. ##允许 cinder 数据库合适的访问权限:
  8. GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
  9. GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
  10. 2 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  11. . admin-openrc
  12. 3 要创建服务证书
  13. ##创建一个 cinder 用户:
  14. openstack user create --domain default --password-cinder cinder
  15. ##添加 admin 角色到 cinder 用户上:
  16. openstack role add --project service --user cinder admin
  17. ##创建 cinder 和 cinderv2 服务实体:
  18. openstack service create --name cinder --description "OpenStack Block Storage" volume
  19. openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
  20. 4 创建块设备存储服务的 API 入口点:
  21. openstack endpoint create --region RegionOne \
  22. volume public http://controller:8776/v1/%\(tenant_id\)s
  23. openstack endpoint create --region RegionOne \
  24. volume internal http://controller:8776/v1/%\(tenant_id\)s
  25. openstack endpoint create --region RegionOne \
  26. volume admin http://controller:8776/v1/%\(tenant_id\)s
  27. openstack endpoint create --region RegionOne \
  28. volumev2 public http://controller:8776/v2/%\(tenant_id\)s
  29. openstack endpoint create --region RegionOne \
  30. volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
  31. openstack endpoint create --region RegionOne \
  32. volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

 

  1. ##安全并配置组件
  2. 1 安装软件包
  3. yum install openstack-cinder
  4. 2 编辑 /etc/cinder/cinder.conf,同时完成如下动作:
  5. ----------------------------------------------------------------
  6. [database]
  7. ...
  8. connection = mysql+pymysql://cinder:cinder@controller/cinder
  9. [DEFAULT]
  10. ...
  11. rpc_backend = rabbit
  12. auth_strategy = keystone
  13. my_ip = 192.168.17.71
  14. [oslo_messaging_rabbit]
  15. ...
  16. rabbit_host = controller
  17. rabbit_userid = openstack
  18. rabbit_password = openstack
  19. [keystone_authtoken]
  20. ...
  21. auth_uri = http://controller:5000
  22. auth_url = http://controller:35357
  23. memcached_servers = controller:11211
  24. auth_type = password
  25. project_domain_name = default
  26. user_domain_name = default
  27. project_name = service
  28. username = cinder
  29. password = cinder
  30. [oslo_concurrency]
  31. ...
  32. lock_path = /var/lib/cinder/tmp
  33. 3 初始化块设备的数据库
  34. su -s /bin/sh -c "cinder-manage db sync" cinder
  35. ----------------------------------------------------------------
  1. ##配置计算节点以使用块设备存储
  2. 1 编辑文件 /etc/nova/nova.conf 并添加如下到其中:
  3. ----------------------------------------------------
  4. [cinder]
  5. os_region_name = RegionOne
  6. ----------------------------------------------------
  1. ##完成安装
  2. 1 重启API服务
  3. systemctl restart openstack-nova-api.service
  4. 2 启动块设备并设置为开机自启
  5. systemctl enable --now openstack-cinder-api.service openstack-cinder-scheduler.service

2 安装并配置块节点

  1. 1 安装支持的工具包
  2. ##安装lvm包:
  3. yum install lvm2
  4. ##启动LVM的metadata服务并且设置该服务随系统启动:
  5. systemctl enable --now lvm2-lvmetad.service
  6. 2 创建LVM物理卷/dev/sdb
  7. pvcreate /dev/sdb
  8. 3 创建 LVM 卷组 cinder-volumes
  9. vgcreate cinder-volumes /dev/sdb
  10. 4 只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:
  11. -------------------------------------------------------
  12. devices {
  13. ...
  14. filter = [ "a/sdb/", "r/.*/"]
  15. -------------------------------------------------------
  16. ##如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上 /etc/lvm/lvm.conf 文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果``/dev/sda`` 设备包含操作系统:
  17. -------------------------------------------------------
  18. filter = [ "a/sdb/", "r/.*/"]
  19. -------------------------------------------------------
  1. ##安全并配置组件
  2. 1 安装软件包
  3. yum install openstack-cinder targetcli python-keystone
  4. 2 编辑 /etc/cinder/cinder.conf,同时完成如下动作:
  5. ------------------------------------------------------------
  6. [database]
  7. ...
  8. connection = mysql+pymysql://cinder:cinder@controller/cinder
  9. [DEFAULT]
  10. ...
  11. rpc_backend = rabbit
  12. auth_strategy = keystone
  13. my_ip = 192.168.17.72
  14. enabled_backends = lvm
  15. glance_api_servers = http://controller:9292 --配置镜像服务 API 的位置
  16. [oslo_messaging_rabbit]
  17. ...
  18. rabbit_host = controller
  19. rabbit_userid = openstack
  20. rabbit_password = openstack
  21. [keystone_authtoken]
  22. ...
  23. auth_uri = http://controller:5000
  24. auth_url = http://controller:35357
  25. memcached_servers = controller:11211
  26. auth_type = password
  27. project_domain_name = default
  28. user_domain_name = default
  29. project_name = service
  30. username = cinder
  31. password = cinder
  32. [lvm] --配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务
  33. ...
  34. volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
  35. volume_group = cinder-volumes
  36. iscsi_protocol = iscsi
  37. iscsi_helper = lioadm
  38. [oslo_concurrency]
  39. ...
  40. lock_path = /var/lib/cinder/tmp
  41. ------------------------------------------------------------
  1. ##完成安装
  2. systemctl enable --enable openstack-cinder-volume.service target.service
  1. ##验证操作
  2. 1 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  3. . admin-openrc
  4. 2 列出服务组件以验证是否每个进程都成功启动:
  5. inder service-list

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

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

三、镜像封装

官网各种系统封装

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

CentOS Cloud images下载

  1. ##自己封装:
  2. 1 下载一个需要封装的系统,并进行安装过程
  3. ##这里不做具体阐述,可根据自己的需求进行下载和安装
  4. -----------------------------------------------
  5. 区别:
  6. 1 设置selinux开机禁用
  7. 开机页面-->e ctrl+x 在系统行设置selinux=0
  8. 2 配置selinux 的配置文件
  9. vi /etc/sysconfig/selinux
  10. +++++++++++++++++++++
  11. SELINUX=disabled
  12. +++++++++++++++++++++
  13. 3 关闭防火墙
  14. systemctl disable --now firewalld
  15. 4 配置网卡信息:
  16. vi /etc/sysconfig/network-scripts/ifcfg-ens33
  17. +++++++++++++++++++++
  18. TYPE=Ethernet
  19. BOOTROTO=dhpc
  20. DEVICE=ens33
  21. ONBOOT=yes
  22. +++++++++++++++++++++
  23. 5 添加一个新的IP
  24. ip addr add 197.169.17.0/24 /dev/eth0
  25. -----------------------------------------------
  26. ##安装 ACPI 服务--->要使管理程序能够重新启动或关闭实例
  27. yum install acpid
  28. systemctl enable acpid
  29. ##配置获取元数据-->实例必须与元数据服务交互,以便在启动时执行几个任务。例如,实例必须获取ssh公钥并运行用户数据脚本。要确保实例执行这些任务,需要安装:
  30. ##安装一个cloud-initRPM--Ubuntu cloud-init包的一个端口。这是推荐的方法
  31. yum install cloud-init
  32. ##cloud-utis-growpart,允许分区调整大小为了正确调整根分区的大小,其中包含允许使用cloud-init调整磁盘大小的适当工具
  33. yum install cloud-utils-growpart
  34. ##cloud-init 通过编辑/etc/cloud/cloud.cfg文件并添加具有不同用户的行来更改所用帐户的名称。
  35. ---------------------------------------------
  36. users:
  37. - name: admin
  38. (...)
  39. ---------------------------------------------
  40. ##禁用 zeroconf 路由--要让实例访问元数据服务
  41. echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  42. ##配置控制台
  43. ##编辑/etc/default/grub文件并配置 GRUB_CMDLINE_LINUX选项。删除 并添加到选项。
  44. ---------------------------------------------------
  45. rhgb quietconsole=tty0 console=ttyS0,115200n8
  46. -----------------------------------------------------
  47. ##保存上述修改:
  48. grub2-mkconfig -o /boot/grub2/grub.cfg
  49. ##关闭实例
  50. poweroff
  51. ##清理(​​删除 MAC 地址详细信息)
  52. virt-sysprep -d centos
  53. ##压缩母镜像
  54. virt-sparsify --compress centos.qcows /var/tmp/images
  55. ##取消定义 libvirt 域 --libvirt不在管理
  56. virsh undefine centos
  57. ##镜像上传:使用qemu-img create命令创建的底层图像文件 已准备好上传

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/77766?site
推荐阅读
相关标签
  

闽ICP备14008679号