82、深入探索Linux云部署:从克隆到OpenStack实践

Linux云部署:从克隆到OpenStack实践

深入探索Linux云部署:从克隆到OpenStack实践

云实例克隆与配置拓展

在云环境中,克隆云实例是一项实用的操作。当选择克隆设置时,对于基于云的镜像和数据镜像,你可以选择创建新副本,或者与现有虚拟机共享它们。完成设置后,选择“克隆”即可。克隆后的云实例可以在虚拟机管理器窗口或通过 virsh 命令启动、停止和管理。克隆的一大优势在于,你可以对克隆实例进行任意更改,而无需修改原始实例。完成操作后,只需删除克隆实例,需要时又能快速生成新的克隆。

云初始化(cloud-init)配置可以进一步扩展。你可以在元数据(meta-data)和用户数据(user-data)文件中添加更多信息来配置云实例。云初始化设置示例可在 Cloud-Init Config Examples 页面找到。需要注意的是,用户数据和元数据文件采用YAML格式,YAML格式使用缩进和常见分隔符,列表项前有连字符和空格,键值对用冒号和空格分隔。若不熟悉YAML,可参考 Yaml Project 网站。

添加SSH密钥

使用云初始化添加SSH密钥是一种安全登录云实例的方式。你可以使用基于密钥的身份验证和 ssh 命令通过网络登录,而不是使用密码。若已为计划用于SSH登录云实例的用户账户生成了公钥和私钥,可使用该公钥。默认情况下,RSA密钥对的公钥位于 id_rsa.pub 文件中,示例如下:

# cat $HOME/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwjxB/rrJY4
oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24/ZBb3S1j7vK2WymOcwEoWekhbZHBAyYeqX
KYQQjUB2E2Mr6qMkmrjQBx6ypxbz+VwADNC
wegY5RCUoNjrN43GVu6nSOxhFf7hv6dtCjvosOvtt0979YS3UcEyrobpNzreGSJ8FMPM
RFMWWg68Jz5hOMCIE1IldhpODvQVbTNsn/STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kI
Dhf/qu/Zn1kxQ9xfecQ+SUi+2IwN69o1fNpexJPFr+Bwjkwcrk58C6uowG5eNSgnuu7G
MUkT root@host2.example.com

要将该公钥添加到云实例的 $HOME/.ssh/authorized_keys 文件中,可在用户数据文件中添加如下内容:

users:
  - default
  - name: wsmith
    gecos: William B. Smith
    primary-group: wsmith
    sudo: ALL=(ALL) NOPASSWD:ALL
    lock-passwd: true
    ssh-authorized-keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwj
xB/rrJY4oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24/
ZBb3S1j7vK2WymOcwEoWekhbZHBAyYeqXKYQQjUB2E2Mr6qMkmrjQBx6ypxbz+V
wADNCwegY5RCUoNjrN43GVu6nSOxhFf7hv6dtCjvosOvtt0979YS3UcEyrobpNz
reGSJ8FMPMRFMWWg68Jz5hOMCIE1IldhpODvQVbTNsn/
STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kIDhf/qu/
Zn1kxQ9xfecQ+SUi+2IwN69o1fNpexJPFr+Bwjkwcrk58C6uowG5eNS
gnuu7GMUkT root@host2.example.com

从上述信息可知, wsmith 是默认用户, gecos 项通常是用户全名,用于 /etc/passwd 文件的第五个字段。该用户的密码被锁定,但由于提供了来自 host2.example.com root 账户的 ssh-rsa 公钥,在私钥与该公钥关联的情况下,可通过SSH以 wsmith 身份无密码登录云实例。

添加软件

云初始化还允许你在云实例启动时安装额外软件。在用户数据文件中,你可以定义YUM仓库(适用于Fedora和RHEL)或apt仓库(适用于Ubuntu或Debian),并指定要安装的软件包。

对于Fedora或RHEL,添加YUM仓库并安装软件包的用户数据文件示例如下:

myownrepo:
    baseurl: http://myrepo.example.com/pub/myrepo/
    enabled: true
    gpgcheck: true
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MYREPO
    name: My personal software repository
packages:
 - nmap
 - mycoolcmd
 - [libmystuff, 3.10.1-2.fc21.noarch]

此示例中,会在 /etc/yum.repos.d/myownrepo.repo 文件中创建一个新的YUM仓库,提供GPG密钥以检查安装包的有效性并开启GPG检查。之后,会安装 nmap 包(来自标准Fedora YUM仓库)、 mycoolcmd 包(来自私有仓库)以及特定版本的 libmystuff 包。

Ubuntu的apt软件仓库配置略有不同。默认情况下,镜像中会配置故障安全的主apt包镜像和安全镜像,以及在Amazon EC2云中运行时搜索最近区域软件包的设置。要添加更多仓库,用户数据文件的条目可以如下:

apt_mirror: http://us.archive.ubuntu.com/ubuntu/
apt_mirror_search:
 - http://myownmirror.example.com
 - http://archive.ubuntu.com
packages:
 - nmap
 - mycoolcmd
 - [libmystuff, 3.16.0-25]

myownmirror.example.com 条目告诉apt使用私有apt仓库搜索软件包。你可以按照与Fedora基本相同的格式输入要安装的软件包,不过特定版本信息可能有所不同。

企业计算中的云初始化

前面的云初始化示例主要是手动添加配置数据并在本地管理虚拟机,这种方法适合理解云初始化的工作原理,但在管理大型企业虚拟机时扩展性不佳。

云初始化支持数据源(datasources)概念。将用户数据和元数据放在数据源中,无需手动将信息注入云实例。当云初始化服务在实例上启动时,它不仅会在本地系统查找数据源,还会在外部查找。

对于Amazon EC2云,云初始化会查询特定IP地址 http://169.254.169.254/ 获取数据。例如,它可能检查 http://169.254.169.254/2009-04-04/meta-data/ 获取元数据,检查 http://169.254.169.254/2009-04-04/user-data/ 获取用户数据。这使得配置数据可以从中央位置存储和访问。

元数据和用户数据中可以包含更复杂的配置方案。云初始化支持Puppet( http://puppetlabs.com/puppet/puppet-open-source )和Chef( https://www.chef.io/chef/ )等配置工具,这些工具可将配置信息脚本应用于云实例,必要时替换组件或重启服务以使系统恢复到所需状态。

OpenStack云镜像部署

OpenStack是一个不断发展的平台,可用于管理物理云计算基础设施和其上运行的虚拟系统。你可以使用OpenStack部署私有云或提供公共云服务。

OpenStack有多种获取方式:
- Linux发行版 :Fedora、Ubuntu和CentOS提供免费版本的OpenStack,可自行部署。Red Hat Enterprise Linux提供需订阅的OpenStack版本,设置较为复杂。一些一体化的OpenStack设置可以在单台机器上运行,但建议从三台物理机器开始:一个控制器节点和两个虚拟机管理程序。
- 公共OpenStack云 :可以以不同成本试用公共OpenStack云,公共OpenStack云列表可从 OpenStack项目网站 获取。

从OpenStack仪表盘开始

假设已有一个OpenStack环境,管理员为你创建了一个名为 cnegus-test-project 的项目和一个 cnegus 用户账户以访问该项目。接下来的操作如下:
1. 配置网络 :设置虚拟网络,该网络将通过DHCP为虚拟机分配一组地址。
2. 配置虚拟机 :选择、配置和部署虚拟机。

以下是配置OpenStack虚拟网络的步骤:
1. 登录OpenStack :使用OpenStack管理员分配的用户名和密码,通过Web浏览器登录OpenStack仪表盘,你将看到一个概览屏幕。
2. 创建网络
- 从概览屏幕的左侧列选择“Networks”。
- 点击“Create Network”按钮。
- 在“Network”选项卡中,输入网络名称(如 mynet )。
- 在“Subnet”选项卡中,输入子网名称(如 mysub01 )、网络地址(如 192.168.100.0/24 )、IP版本( IPv4 )和网关IP(如 192.168.100.1 ),保持“Disable Gateway”未选中。
- 在“Subnet Detail”选项卡的“Allocation Pool”框中输入逗号分隔的IP地址范围(如 192.168.100.10,192.168.100.50 ),可从OpenStack云管理员处获取名称服务器建议,或使用公共DNS服务器(如Google的 8.8.8.8 8.8.4.4 )。
- 点击“Create”创建新网络,新网络将显示在“Networks”屏幕上。
3. 创建路由器
- 从左侧列选择“Routers”。
- 点击“Create Router”按钮。
- 输入路由器名称(如 myrouter01 )并点击“Create Router”。
- 选择“Set Gateway”按钮。
- 在“Set Gateway”屏幕中,点击“External Network”框并从可用的外部网络中选择,保持“Router Name”和“Router ID”字段不变,点击“Set Gateway”,新路由器将显示在“Routers”屏幕上。
4. 连接网络到外部路由器
- 在“Routers”屏幕上,选择刚创建的路由器名称(如 myrouter1 )。
- 在“Router Details”屏幕中,选择“Add Interface”按钮。
- 在“Add Interface”屏幕中,点击“Subnet”框并选择之前创建的子网(如 mynet: 192.168.100.0/24 mysub01 ),无需更改“Router Name”或“Router ID”。
- 点击“Add Interface”。
5. 查看网络拓扑 :从左侧列点击“Network Topology”,然后将鼠标悬停在路由器名称(如 myroute01 )上,可查看网络配置示例。

配置网络后,即可创建用于远程访问虚拟机的密钥。配置远程访问密钥的步骤如下:
1. 从左侧列选择“Access & Security”。
2. 创建密钥对
- 若已有密钥对,可跳过此步骤;否则,选择“Keypairs”选项卡并点击“Create Keypair”按钮。
- 在“Create Keypair”窗口中,输入密钥对名称(如 mycloudkey )并点击“Create Keypair”按钮。
- 弹出窗口询问是否打开或保存 .pem 文件,选择“Save File”并点击“OK”,将文件保存到用户主目录的 .ssh 目录中。

完成上述步骤后,你就可以部署OpenStack实例(基于云的虚拟机)了。

启动OpenStack虚拟机

启动新的云虚拟机实例的步骤如下:
1. 选择详情
- 可用性区域 :选择一个可用区域,可用区域由一组计算主机组成,不同区域可能代表物理上相邻的计算机组或具有相同硬件特性的计算机组。
- 实例名称 :为实例命名,以便记忆。
- 规格 :选择规格以分配一组资源给虚拟机实例,包括虚拟CPU核心数、可用内存量、分配的磁盘空间和临时磁盘空间。默认规格包括 m1.tiny m1.small m1.medium m1.large m1.xlarge ,云管理员可添加其他规格。
- 实例数量 :默认设置为1,可根据需要更改数量以启动多个实例。
- 实例启动源 :实例可以从镜像、快照、卷、包含新卷的镜像或包含新卷的卷快照启动。
- 镜像名称 :选择要启动的镜像,名称通常包含要启动的操作系统名称。
- 设备大小和设备名称(可选) :若选择包含新卷的启动源,可在此设置卷的大小(以GB为单位)和设备名称。例如,选择 vda 作为设备名称,代表该设备的将是 /dev/vda
2. 选择访问与安全 :选择之前创建的密钥对。
3. 选择网络 :从可用网络列表中,用鼠标将所需网络拖到“Selected Networks”框中。
4. 添加创建后设置 :可以添加命令和脚本,在系统启动后进一步配置系统,这里可以添加之前云初始化部分中用户数据文件里的信息。
最后,点击“Launch”启动虚拟机。虚拟机运行后,可通过选择实例并点击“Console”选项卡登录系统,虚拟机会显示登录提示。若要通过网络使用SSH访问虚拟机,还需进行以下操作:
1. 添加浮动IP地址 :从OpenStack仪表盘选择实例,点击包含实例的条目上的“More”,然后点击“Associate Floating IP”。

通过以上步骤,你可以深入了解Linux云部署的各个方面,从云实例克隆到使用OpenStack部署虚拟机,为在云环境中运行Linux系统提供了全面的指导。

深入探索Linux云部署:从克隆到OpenStack实践

云部署操作总结与对比

为了更清晰地理解前面介绍的云部署操作,下面通过表格对云实例克隆、云初始化配置、OpenStack网络和虚拟机配置等关键操作进行总结对比。

操作类型 主要步骤 适用场景 优势
云实例克隆 选择克隆设置(新副本或共享),点击克隆 需要临时测试或修改配置,不想影响原始实例 可随意修改克隆实例,完成后删除,可快速生成新克隆
云初始化配置(添加SSH密钥) 生成公钥和私钥,将公钥添加到用户数据文件 希望通过SSH无密码登录云实例 提供安全的远程登录方式
云初始化配置(添加软件) 在用户数据文件中定义仓库并指定软件包 需要在云实例启动时安装额外软件 可根据需求定制云实例软件环境
OpenStack网络配置 登录仪表盘,创建网络、路由器,连接网络到路由器,查看网络拓扑 使用OpenStack部署虚拟机 简化网络配置,通过虚拟网络为虚拟机分配地址
OpenStack虚拟机配置 选择详情(可用性区域、实例名称等),选择访问与安全、网络,添加创建后设置,启动虚拟机 在OpenStack环境中运行虚拟机 可灵活配置虚拟机资源和环境
云部署流程可视化

下面通过mermaid格式的流程图展示从云实例克隆到OpenStack虚拟机部署的整体流程:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(云实例克隆):::process
    B --> C{是否需要云初始化配置?}:::decision
    C -->|是| D(云初始化配置):::process
    C -->|否| E(OpenStack部署准备):::process
    D --> E
    E --> F(OpenStack网络配置):::process
    F --> G(配置远程访问密钥):::process
    G --> H(OpenStack虚拟机配置):::process
    H --> I(启动虚拟机):::process
    I --> J(添加浮动IP地址):::process
    J --> K([完成]):::startend
注意事项与常见问题解决

在进行Linux云部署过程中,有一些注意事项和常见问题需要关注:

云实例克隆
  • 镜像选择 :确保选择合适的基于云的镜像和数据镜像进行克隆,根据实际需求决定是创建新副本还是共享。
  • 资源占用 :克隆多个实例可能会占用较多的云资源,需要注意云平台的资源限制。
云初始化配置
  • YAML格式 :用户数据和元数据文件采用YAML格式,要注意缩进和分隔符的使用,避免格式错误导致配置失败。
  • 软件仓库 :添加软件仓库时,要确保仓库地址的正确性和可用性,以及GPG密钥的有效性。
OpenStack部署
  • 网络配置 :在配置网络时,要注意IP地址范围的规划,避免与现有网络冲突。
  • 密钥管理 :妥善保管私钥,避免私钥泄露导致安全问题。
未来云部署趋势展望

随着云计算技术的不断发展,Linux云部署也将呈现出一些新的趋势:

  • 自动化部署 :未来云部署将更加自动化,通过编排工具和脚本实现一键式部署,减少人工操作和错误。
  • 混合云集成 :越来越多的企业将采用混合云架构,将私有云和公共云结合使用,以实现资源的优化配置和灵活扩展。
  • 安全增强 :云安全将成为云部署的重要关注点,未来将有更多的安全技术和策略应用于云环境,保障数据和系统的安全。

通过深入了解Linux云部署的各个方面,掌握云实例克隆、云初始化配置和OpenStack使用等技能,你可以更好地在云环境中运行Linux系统,适应不断变化的云计算发展趋势。希望本文能为你在云部署领域的实践提供有价值的参考和指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值