Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811

OpenStack融合OpenDaylight的部署

OpenStack融合OpenDaylight的部署

1 介绍

OpenStack是流行的开源基础架构即服务项目,涵盖计算,存储和网络管理。OpenStack可以通过Modular Layer 2(ML2)北向插件将OpenDaylight用作其网络管理提供程序。OpenDaylight通过OVSDB南向插件管理OpenStack计算节点的网络流。本文分别介绍实验环境构建前准备、ODL安装、OpenStack配置、OpenStack和ODL集成等四个部分。

1.1 OpenDaylight简介

OpenDaylight(ODL)作为软件定义网络(SDN)的控制面,拥有一套模块化、可插拔灵活地控制平台作为核心,这个控制平台基于Java开发,理论上可以运行在任何支持Java的平台上,在一定程度上能够降低北向应用和南向协议的耦合性。相比于传统网络架构来说具有很多优点:

(1)传控分离,网络资源集中控制,统一调度,提高网络运行的效率.

(2)实现于数据面的解耦合,改善了传统网络升级、维护带来的难题。

(3)可以实现大规模路由,提高网络资源的利用率。

1.2 OpenStack集成OpenDaylight架构

图1:ODL与OpenStack架构图

1.3 OpenStack对接OpenDaylight原理

OpenStack是主流的云平台, ODL是主流的SDN Controller。对于这两个开源项目,在其社区中,已经提供了标准的对接接口。厂商的商用云平台一般不会改变对外的接口,所有深度开发主要局限在接口之内,以此保证不同品牌的云平台和控制器之间的兼容性。具体的对接模型如下。

对接关键就是Networking-odl插件,云平台和SDN控制器有一方需要提供这个插件,并安装到OpenStack平台上。Networking-odl包含Open Daylight Mechanism Driver和Open Daylight L3 Router Plugin。

  • Open Daylight Mechanism Driver是OpenDaylight的ML2 Mechanism Driver,通过类似REST proxy的方式实现了ML2 Mechanism Driver功能。它把Mechchanism Driver的所有调用转化成Neutron API传递给OpenDaylight,由OpenDaylight的NB REST Service(Neutron API Service)处理后返回。
  • Open Daylight L3 Router Plugin是OpenDaylight的L3 Router plugin,实现基本router、ext-gw-mode、extraroute、dvr、L3-ha等功能。Open Daylight L3 Router Plugin本身也只是实现了类似REST proxy的功能,它以现有的OpenStack L3 Router plugin为基础,封装了一层L3调用转Neutron API到ODL的功能。

云平台和SDN控制器之间的所有调用信息基本都是通过这个组件。对接完成后,便可以在云平台上依次创建网络、子网、路由、路由和子网绑定、云主机等。

2 目标与物理网络拓扑

环境物理拓扑,如图1所示:

图2:物理网络拓扑

部署过程中所涉及到的服务器管理网口的IP地址如下表所示:

设备名称接口IP地址备注
controller管理口192.168.4.145
compute管理口192.168.4.144
ODL管理口192.168.4.150

表1:服务器理口列表

3 硬件与软件环境

部署环境中涉及到的硬件和软件如表2和表3所示:

名称类型硬件指标数量备注
服务器X861.至少8G内存3
2.磁盘不少于500G
3.Server1和Server3的BIOS开启CPU嵌套虚拟化(INTEL:VT-x,AMD:AMD-V)

表2:硬件环境

软件版本备注
操作系统Centos7.7安装时选择Compute Node 模式,根目录/至少500G
OpenStackstein
ODLkaraf-0.6.4-Carbon

表3:软件环境

4 融合部署

4.1 安装前准备

进入本实验前,确保您以安装好OpenStack环境,并确保实例间可以ping通。

OpenStack环境是基于centos7.7使用stein版,本文档的参考部署是2节点集群:

  • 一个控制节点,一个计算节点。
  • 控制节点(keystone,glance,nova,neutron-server,mysql,dhcp-agent,l3-agent,metadata-agent,neutron-plugin-openvswitch-agent)
  • 计算节点(nova-compute,neutron-plugin-openvswitch-agent,cinder-volume)
  • Neutron将OVS后端和vxlan用于隧道

安装好OpenStack,连接到Horizon执行一些操作来验证它是否正常工作。要检查Neutron的配置,创建两个实例,分配公网浮动IP和私网IP,确认可以连通,并且它们之间可以互通。

4.2 安装OpenDaylight

先决条件:OpenDaylight需要Java 1.8.0和Open vSwitch> = 2.5.0

1) 安装JDK1.8

先通过-version命令查看JDK已安装情况:

[root@localhost ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)Carbon

如果没有安装或版本较低,则:

[root@localhost ~]# yum install java-11-openjdk-devel.x86_64

进入安装目录确认java的路径:

[root@localhost ~]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/

打开配置文件并在最后添加如下几行:

[root@ localhost ~]# vim /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
PATH=$PATH:$JAVA_HOME/bin 
export JAVA_HOME PATH

立即生效:

[root@ localhost ~]# source /etc/profile

2) 安装Opendaylight

下载OpenDaylight Carbon,位于

https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.tar.gz

解压:

[root@ localhost ~]# tar -zxvf distribution-karaf-0.6.4-Carbon.tar.gz

进入解压目录并执行:

[root@ localhost ~]# cd distribution-karaf-0.6.4-Carbon/
[root@ localhost distribution-karaf-0.6.4-Carbon]# ./bin/start
[root@ localhost distribution-karaf-0.6.4-Carbon]# ./bin/client
Apache Karaf starting up. Press Enter to open the shell now...
Logging in as karaf
________ ________ .__ .__ .__ __
\_____ \ ______ ____ ____ \______ \ _____ ___.__.| | |__| ____ | |___/ |_
/ | \\____ \_/ __ \ / \ | | \\__ \< | || | | |/ ___\| | \ __\
/ | \ |_> > ___/| | \| ` \/ __ \\___ || |_| / /_/ > Y \ |
\_______ / __/ \___ >___| /_______ (____ / ____||____/__\___ /|___| /__|
\/|__| \/ \/ \/ \/\/ /_____/ \/
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.
opendaylight-user@root>

安装如下组件:

opendaylight-user@root>feature:install odl-netvirt-openstack odl-dlux-core odl-mdsal-apidocs opendaylight-user@root>feature:install odl-ovsdb-southbound-impl-ui odl-neutron-service odl-restconf-all

3) 配置opendaylight

vim  etc/opendaylight/datastore/initial/config/netvirt-dhcpservice-config.xml
<dhcpservice-config xmlns="urn:opendaylight:params:xml:ns:yang:dhcpservice:config">
<controller-dhcp-enabled>true</controller-dhcp-enabled>
<dhcp-dynamic-allocation-pool-enabled>true</dhcp-dynamic-allocation-pool-enabled>

vim etc/custom.properties
ovsdb.of.version=1.3
ovsdb.l3.fwd.enabled=yes
ovsdb.l3.arp.responder.disabled=yes

</dhcpservice-config>

4) 重新启动opendaylight

[root@ localhost ~]#./bin/stop
[root@ localhost ~]#./bin/start

5) 验证安装

http://192.168.4.150:8181/index.html

用户名密码都是admin

4.3 集成过程

1) 首先要清除原有的实例和neutron网络

控制节点执行:

nova list 
nova delete <instance names> 
neutron subnet-list 
neutron router-list 
neutron router-port-list <router name> 
neutron router-interface-delete <router name> <subnet ID or name> 
neutron subnet-delete <subnet name> 
neutron net-list 
neutron net-delete <net name> 
neutron router-delete <router name> 
neutron port-list

删除所有port、router、subnet后,再用如下命令检查一遍,应该为空

2) 停止Neutron服务

当Neutron在计算和控制节点上管理OVS实例时,OpenDaylight和Neutron可能会发生冲突。为防止出现问题,我们需要关闭控制节点Neutron服务,并在所有节点上关闭Neutron的Open vSwitch agent。

关闭Neutron服务:

控制节点执行

[root@controller ~ (keystone_admin)]# systemctl stop neutron-server
[root@controller ~ (keystone_admin)]# systemctl stop neutron-l3-agent
[root@controller ~ (keystone_admin)]# systemctl disable neutron-l3-agent

关闭并禁用Neutron的代理服务:

控制节点和计算节点执行

systemctl stop neutron-openvswitch-agent
systemctl disable neutron-openvswitch-agent

3) 停止Open vSwitch服务,并清除现有的OVSDB

控制节点和计算节点执行

systemctl stop openvswitch
rm -rf /var/log/openvswitch/*
rm -rf /etc/openvswitch/conf.db
systemctl start openvswitch

查看ovs状态时应该没有任何的网桥

[root@compute ~]# ovs-vsctl show
9f0995a9-5d9e-433b-aae4-0fa447a9e8a6
    ovs_version: "2.11.0"

4) 将其交给ODL管理

控制节点和计算节点执行

ovs-vsctl set-manager tcp:192.168.4.150:6640

(设置所有节点上用于VXLAN连接的IP。该IP必须与每台计算机上的实际linux接口相对应)

控制节点执行

ovs-vsctl set Open_vSwitch . other_config:local_ip=192.168.4.145
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex eno2
ovs-vsctl set Open_vSwitch . other_config:provider_mappings=provider:br-ex
ovs-vsctl set Open_vSwitch . external_ids:provider_mappings="{\"provider\": \"br-ex\"}"

计算节点执行

ovs-vsctl set Open_vSwitch . other_config:local_ip=192.168.4.144

ovs-vsctl show命令可以看到OpenDaylight将自动创建一个连接到控制器的br-int网桥

[root@controller ~ (keystone_admin)]# ovs-vsctl show
97391679-66bb-4654-a4bd-ef22b45b9c27
    Manager "tcp:192.168.4.150:6640"
        is_connected: true
    Bridge br-int
        Controller "tcp:192.168.4.150:6653"
            is_connected: true
        fail_mode: secure
        Port br-int
            Interface br-int
                type: internal
    ovs_version: "2.11.0"

如果您没有在上面看到结果,可能存在iptables限制,需要打开相关端口(6640、6653)。
同时要在opendaylight服务器上禁用selinux。

setenforce 0
sed -i -e 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

5) 配置Neutron中使用OpenDaylight

  • 安装Neutron networking-odl模块

控制节点和计算节点执行

[root@controller ~ (keystone_admin)]# yum install python2-networking-odl
  • 配置Neutron以使用OpenDaylight的ML2驱动程序

控制节点执行

[root@controller ~ (keystone_admin)]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
mechanism_drivers = opendaylight_v2
tenant_network_types = vxlan
[ml2_odl]
url = http://192.168.4.150:8181/controller/nb/v2/neutron
password = admin
username = admin
port_binding_controller = pseudo-agentdb-binding
enable_dhcp_service = True
  • 配置Neutron以将OpenDaylight的odl-router服务插件用于L3连接:

控制节点执行

[root@controller ~ (keystone_admin)]# vim /etc/neutron/neutron.conf 
[DEFAULT]
service_plugins = odl-router_v2
  • 配置Neutron DHCP代理以提供元数据服务:

控制节点执行

[root@controller ~ (keystone_admin)]# vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
force_metadata = True
[ovs]
ovsdb_interface = vsctl
  • 重置Neutron的数据库 (控制节点)

控制节点执行

[root@controller ~ (keystone_admin)]#mysql  -u root  -p123456  -e "DROP DATABASE IF EXISTS neutron;"
[root@controller ~ (keystone_admin)]#mysql   -u root  -p123456  -e "CREATE DATABASE neutron CHARACTER SET utf8;"
[root@controller ~ (keystone_admin)]#mysql   -u root  -p123456  -e " GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron'; "
[root@controller ~ (keystone_admin)]#neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
  • 重新启动neutron-server:

控制节点执行

systemctl start neutron-server
  • openstack启用odl控制:

控制节点和计算节点执行

neutron-odl-ovs-hostconfig --datapath_type=system

4.4 可能遇到的问题

  • OVS与OpenDaylight连接之后,不能自动创建br-int

原因:OpenDaylight的组件问题,组件之间可能相互干扰

解决办法:清空组件,安装以下组件(以下组件为最小配置,如需使用OpenDaylight的其他功能请依照需求自行添加)

odl-ovsdb-openstack odl-dlux-core

  • 重启neutron服务失败

原因是虽然指定了mechanism_driver为opendaylight,但是还没有安装此driver的实现。使用以下命令安装之后,就能重启neutron服务了。

yum install python2-pip
pip install networking_odl
  • 实验中,创建的虚拟机启动之后无法获取ip

原因:计算节点与网络节点的隧道没有建立

解决办法:将OVS相关信息告诉OpenDaylight,建立计算节点和网络节点之间的隧道,使得计算节点的虚拟机可以访问网络节点的dhcp服务。

ovs-vsctl set Open_vSwitch uuid other_config={'local_ip'='192.168.4.145'}
ovs-vsctl set Open_vSwitch uuid other_config={'local_ip'='192.168.4.144'}

上述命令中的uuid是OVS的uuid,可通过ovs-vsctl show命令查看,也可以通过ovs-vsctl get Open_vSwitch . _uuid命令查询,local_ip需要指定节点数据口的ip地址。

  • 虚拟机不能访问外网
  1. 需要修改网络节点/etc/neutron/l3_agent.ini文件,增加br-ex的配置,该配置在安装阶段默认留空,需要做如下配置:
[DEFAULT] 
external_network_bridge = br-ex

2. 为br-int和br-ex之间建立patch对,使它们之间可以通信

ovs-vsctl add-port br-ex "ex-patch-int"
ovs-vsctl set interface "ex-patch-int" type=patch
ovs-vsctl set interface "ex-patch-int" options:peer=int-patch-ex
 
ovs-vsctl add-port br-int "int-patch-ex"
ovs-vsctl set interface "int-patch-ex" type=patch
ovs-vsctl set interface "int-patch-ex" options:peer=ex-patch-int

4.5 验证测试

  • 验证OpenDaylight的ML2接口是否正常工作:
curl -u admin:admin http://192.168.4.150:8181/controller/nb/v2/neutron/networks
{
   "networks" : [ ]
}

如果这不起作用或出现错误,请检查中的Neutron日志文件/var/log/neutron/server.log。

这里的错误消息应该提供一些有关与OpenDaylight连接问题的线索。

使用Neutron CLI创建网络,子网,路由器,连接端口并启动实例:

neutron router-create router1
neutron net-create private
neutron subnet-create private --name=private_subnet 10.10.5.0/24
neutron router-interface-add router1 private_subnet
nova boot --flavor <flavor> --image <image id> --nic net-id=<network id> test1
nova boot --flavor <flavor> --image <image id> --nic net-id=<network id> test2

至此,OpenDaylight可以为网络上的实例创建网络端点并管理到它们的流量。

可以使用Horizon控制台访问VM,也可以通过发出 nova get-vnc-console novnc

通过控制台,可以验证虚拟机之间的连接。

添加用于浮动IP连接的外部网络

为了使用浮动IP连接到VM,我们需要通过创建外部网络和子网来配置外部网络连接。该外部网络必须链接到计算机上的物理端口,该端口将提供到外部网关的连接。

sudo ovs-vsctl set Open_vSwitch . other_config:provider_mappings=physnet1:eno2
neutron net-create public-net -- --router:external --is-default --provider:network_type=flat --provider:physical_network=physnet1
neutron subnet-create --allocation-pool start=10.10.10.2,end=10.10.10.254 --gateway 10.10.10.1 --name public-subnet public-net 10.10.0.0/16 -- --enable_dhcp=False
neutron router-gateway-set router1 public-net

neutron floatingip-create public-net
nova floating-ip-associate test1 <floating_ip>

4.6 结论

OpenStack和OpenDaylight可以分开安装,并进行集成,鉴于两者的版本变化很大,且有很多问题,中间集成的过程中可能因为安装环境不同,遇到各种问题。但都可以一一解决。

4.7 参考资料

如有其它问题,请填写右侧需求表单联系我们。

Prometheus监控系统部署方案

Prometheus监控系统部署方案

1 Prometheus简介

Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation,作为继Kubernetes之后的第二个托管项目。

2 特性

  • 多维度数据模型-由指标键值对标识的时间序列数据组成
  • PromQL,一种灵活的查询语言
  • 不依赖分布式存储;单个服务器节点是自治的
  • 以HTTP方式,通过pull模型拉取时间序列数据
  • 支持通过中间网关推送时间序列数据
  • 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示

3 组件

  • Prometheus Server:用于收集和存储时间序列数据
  • Client Library:客户端库,为需要监控的服务生成相应的metrics并暴露给Prometheus server。当 Prometheus server来pull时,直接返回实时状态的metrics
  • Exporters:用于暴露已有的第三方服务的metrics给Prometheus
  • Alertmanager:从Prometheus server端接收到alerts后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件、pagerduty、OpsGenie、webhook等
  • Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用grafana的公司有很多,如paypal、ebay、intel等

4 适用场景

Prometheus适用于记录任何纯数字时间序列。它适用于以机器为中心的监控以及高度动态的面向服务架构的监控。在微服务的世界中,Prometheus的多维度数据收集和查询非常强大。

Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。当基础架构的其他部分损坏时,您可以依赖它,并且您不需要设置大量的基础架构来使用它。

5 目标

Google指出,监控分为白盒监控和黑盒监控之分。

白盒监控:通过监控内部的运行状态及指标判断可能会发生的问题,从而做出预判或对其进行优化。

黑盒监控:监控系统或服务,在发生异常时做出相应措施。

Prometheus监控的目标如下:

  • 根据历史监控数据,对未来做出预测
  • 发生异常时,及时报警,或做出相应措施
  • 根据监控报警及时定位问题根源
  • 通过可视化图表展示,便于直观获取信息

6 部署过程

本次部署一台Server。服务器最低配置要求8G内存,40G硬盘。服务器IP 192.168.4.150。

6.1 关闭SELinux

SeLinux不关闭会发生无法访问的情况。

[root@localhost  ~]# setenforce 0
[root@localhost  ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

6.2 关闭防火墙

防止安装时出现各个组件的端口不能访问的问题。

[root@localhost  ~]#systemctl stop firewalld && systemctl disable firewalld                          

6.3 下载安装包

[root@localhost~]#wget\ https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
[root@localhost~]#wget\ https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz 
[root@localhost~]#wget \
https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

6.4 配置Prometheus Server

解压Prometheus压缩包,并配置Prometheus配置文件。

[root@localhost  ~]# mkdir /root/monitor
[root@localhost  ~]# tar -xvf prometheus-2.16.0.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv prometheus-2.16.0.linux-amd64 prometheus
[root@localhost  ~]# vi /home/monitor/prometheus/prometheus.yml
global:
  scrape_interval: 30s
evaluation_interval: 30s
scrape_timeout: 10s
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.4.150:9093
rule_files:
  - /root/monitor/prometheus/rule/*.rules
scrape_configs:
- job_name: 'node'
  file_sd_configs:
  - refresh_interval: 1m
    files:
    - node.json
[root@localhost  ~]# vi /root/monitor/prometheus/node.json
[
  {
    "targets": [ "192.168.5.135:9100"],
    "labels": {
      "grafana": "prometheus",
      "tera": "exporter",
      "job": "node"
    }
  }
]

6.5 System配置Prometheus

使用System配置Prometheus实现服务自启。

[root@localhost  ~]# vi /usr/lib/systemd/system/prometheus.service
[Unit]
After=docker.service
[Service]
ExecStart=/root/monitor/prometheus/prometheus \
--config.file=/root/monitor/prometheus/prometheus.yml \ 
--storage.tsdb.path=/root/monitor/prometheus/data/ --web.external-url=http://:9090
Restart=always
[Install]
WantedBy=multi-user.target

6.6 配置Alertmanager

解压Alertmanaget安装包,Alertmanager接收Prometheus监控信息并将告警信息通过邮件发送到接收人。

[root@localhost  ~]# tar -xvf alertmanager-0.20.0.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv alertmanager-0.20.0.linux-amd64.tar.gz alertmanager
[root@localhost  ~]# vi /home/monitor/alertmanager/alertmanager.yml
global:
  resolve_timeout: 10m
  smtp_smarthost: ''
  smtp_from: 'email'
  smtp_auth_username: 'email'
  smtp_auth_password: 'password'
  smtp_hello: 'Hello'
  smtp_require_tls: false
templates:
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 1m
  repeat_interval: 360m
  receiver: asterfusion
receivers:
- name: asterfusion
  email_configs:
  - to: '接收人1'
    send_resolved: true Restart=always
[Install]
WantedBy=multi-user.target

6.7 System配置Alertmanager

使用System配置Alertmanager实现服务自启。

[root@localhost  ~]#vi /usr/lib/systemd/system/alertmanager.service
[Unit]想·
After=docker.service
[Service]
ExecStart=/root/monitor/alertmanager/alertmanager  --web.listen-address=192.168.4.150:9093\
--config.file=/root/monitor/alertmanager/alertmanager.yml\  
--storage.path=/root/monitor/alertmanager
Restart=always
[Install]
WantedBy=multi-user.target

6.8 部署Granfana

[root@localhost  ~]# wget https://dl.grafana.com/oss/release/grafana-6.7.1-1.x86_64.rpm 
[root@localhost  ~]# yum -y install grafana-6.7.1-1.x86_64.rpm

6.9 部署Node_exporter

部署Node_exporter采集服务器资源信息。

[root@localhost  ~]# tar -xvf node_exporter-0.18.1.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv node_exporter-0.18.1.linux-amd64.tar.gz node_exporter

6.10 System配置Node_exporter

使用Sysytem管理Node_exporter实现服务自启。

[root@localhost  ~]#vi /usr/lib/systemd/system/node.service
[Unit]
After=docker.service
[Service]
ExecStart=/root/monitor/node_exporter/node_exporter 
Restart=always
[Install]
WantedBy=multi-user.target

6.11 添加监控主机

在Prometheus文件夹下创建node.json文件,添加需要监控的主机列表。

[root@localhost  ~]# vi /root/monitor/prometheus/node.json
[
  {
    "targets": [ "192.168.4.150:9100"],
    "labels": {
      "grafana": "controller",
      "tera": "exporter",
      "job": "node"
    }
  },
]

6.12 添加报警

在Prometheus的rule文件夹下定义报警规则,满足条件则把信息推送到Alertmanager。

[root@localhost  ~]# mkdir /root/monitor/prometheus/rule
[root@localhost  ~]# vi /root/monitor/prometheus/rule/node.rules
groups:
- name: nodedown
  rules:
  - alert: nodeDown
    expr: up{tera="exporter"} == 0
    for: 1m
    labels:
      severity: serious
    annotations:
      summary: "Instance {{ $labels.instance }} node is Down"
      description: "{{ $labels.instance }} node is Down"

6.13 启动服务

Prometheus监控所有组件都是用System管理。

[root@localhost  ~]# systemctl start prometheus.service && systemctl enable prometheus.service
[root@localhost  ~]# systemctl start node.service && systemctl enable node.service
[root@localhost  ~]# systemctl start alertmanager && systemctl enable alertmanager
[root@localhost  ~]# systemctl start grafana-server && systemctl enable grafana-server

6.14 监控Web

Prometheus Web URL: http://192.168.4.150:9090

Alertmanager Web URL: http://192.168.4.150:9093

Node_exporter Web URL: http://192.168.4.150:9100

Grafana Web URL : http://192.168.4.150:3000

7 参考资料

  1. Prometheus官网:https://prometheus.io/
  2. Grafana官网:https://grafana.com/

如有其它问题,请填写右侧需求表单联系我们。

从零开始:搭建PXE远程批量安装服务器


关注星融元


在大规模服务器部署时,面对成百上千台服务器,通过手动插入光盘或者USE驱动器来安装操作系统无比繁琐,让大量工程师在现场挨个安装系统也不切实际,PXE的出现使得网络远程批量自动安装和配置操作系统成为现实。

什么是PXE?

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel设计的协议,它允许计算机通过网络启动。这个协议工作在Client/Server模式下,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。

相比其他工具,PXE更好地解决了以下问题:

  • 自动化:PXE允许自动安装和配置操作系统,减少了手动操作的工作量。
  • 远程实现:通过网络远程安装操作系统,无需物理介质,方便管理远程服务器。
  • 规模化:特别适用于大规模服务器部署,可以同时装配多台服务器。。

PXE工作原理和配置

工作原理

  1. PXE启动:当终端进入网卡启动时,会发送一个特殊的PXE启动请求到本地网络上的DHCP服务器。
  2. DHCP服务:DHCP服务器收到PXE启动请求后,会向计算机发送DHCP响应,DHCP响应包含了计算的网络配置信息,以及PXE引导服务器的IP地址——TFTP Server(Trivial File Transfer Protocol)。
  3. TFTP传输:计算机收到DHCP响应后,会使用TFTP从Server下载引导文件——pxelinux.0或者bootx64.efi。
  4. 加载引导文件:计算机加载并执行从TFTP下载的引导文件。引导文件通常是一个小型的Linux内核,能够连接到PXE服务器并获取操作系统镜像。
  5. 获取配置信息:引导文件连接到PXE服务器后,会通过TFTP发送请求以获取更多的配置信息。
  6. 获取操作系统镜像:PXE服务器根据计算机的请求,将系统镜像发送给计算机。
  7. 操作系统加载:一旦操作系统映像文件下载完成,计算机会加载并执行该映像文件。此时,计算机将完全从网络上运行操作系统,而无需本地硬盘上的安装。

PXE启动流程

注意:虽然PXE很好用,但启动时也需要满足以下条件

  1. 网卡支持PXE,目前新出的网卡基本都支持,同时需要完成BIOS的启动项配置。
  2. 传统启动模式(Legacy)下,PXE客户端会请求pxelinux.0;UEFI启动会请求bootx64.efi。
  3. 也可以采用nfsboot方式,该流程采用的是ISO镜像下载再安装的方式。

由于星融元交换机的开放性,PXE Server所需的组件能全部部署在CX-M上,即一台CX-M设备即可满足PXE的需求。

安装配置

安装配置

安装配置

星融元已通过PXE成功实现了大规模服务器的商业部署、自动化操作系统安装,从安装配置TFTP到准备启动文件、安装配置TFTP、配置HTTP Server、配置启动文件、配置DHCP到最后的验证,都可以在PXE配置文档中学会。

在现代IT环境中,通过PXE自动化流程部署系统可以减少人为错误,有助于提高效率、简化管理并确保一致性,亲手配置试试吧~

技术手册-PXE配置指导手册

相关文章

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2