设为首页 收藏本站
查看: 908|回复: 0

[经验分享] Ubuntu 14.10 下ZooKeeper+Hadoop2.6.0+HBase1.0.0 的HA机群高可用配置

[复制链接]

尚未签到

发表于 2015-9-7 07:57:06 | 显示全部楼层 |阅读模式
1 硬件环境
  Ubuntu 14.10 64位

2 软件环境
  openjdk-7-jdk
  hadoop 2.6.0
  zookeeper-3.4.6
  hbase-1.0.0

3 机群规划

3.1 zookeeper配置-机器结点
  192.168.1.100 1421-0000
192.168.1.106   1421-0003
192.168.1.107   1421-0004
192.168.1.108   1421-0005
192.168.1.109   1421-0006

3.2 hadoop配置-机器结点
  192.168.1.100 1421-0000 DN节点,Journal节点,zookeeper节点
192.168.1.1011421-0001  备NN,DN节点
192.168.1.102   1421-0002  主NN
192.168.1.103   1423-0001  DN节点,主RM
192.168.1.104   1423-0002  DN节点,备RM
192.168.1.105   1423-0003  DN节点,JobHistory
192.168.1.106   1421-0003  DN节点,Journal节点,zookeeper节点
192.168.1.107   1421-0004  DN节点,Journal节点,zookeeper节点
192.168.1.108   1421-0005  DN节点,Journal节点,zookeeper节点
192.168.1.109   1421-0006  DN节点,Journal节点,zookeeper节点
  说明:

  1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态
  2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

4 集群配置
  机群的安装步骤大概如下:1 JDK配置;2 SSH免密码登录设置;3 ZooKeeper配置;4 Hadoop配置;5 HBase配置

4.1 Hadoop编译与基本配置
  下载Hadoop稳定版,然后用mvn进行编译



mvn package -Pdist,native -DskipTests –Dtar
  即可在其目录下:/hadoop-dist/target 就可以找到编译好的 hadoop 了。编译 过程需要 jdk,maven,protobuf 和 cmake 为基础。
  SSH 也可通过 apt 进行下载,在生成 key 的时候指定密码为空,其他用回车跳过设置为默认即可,在 home 下的用户目录下,找到.ssh 文件夹,通过创建
文件夹 authorized_keys,主要 Shell 命令如下:
ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
其中 id_rsa.pub 位于.ssh 文件夹下,为 ssh 公钥,添加为信任方后,即可完成免密码登陆操作。

4.2 ZooKeeper配置
  ZooKeeper的配置文件在conf中,名为zoo.conf,主要配置的内容位其log和data的磁盘路径,以及各个节点的基础信息。它本身提供了一个zoo_sample.cfg,我们将他复制一份,命名为
  zoo.cfg,然后在其中添加一些配置,下面之列出新增的部分。



dataDir=/home/hadoop/software/cloud/zookeeper-3.4.6/zoodata
dataLogDir=/home/hadoop/software/cloud/zookeeper-3.4.6/zoolog

server.0=1421-0000:2888:3888
server.1=1421-0003:2888:3888
server.2=1421-0004:2888:3888
server.3=1421-0005:2888:3888
server.4=1421-0006:2888:3888

  接下来需要在每个dataDir目录下新建myid文件,每个文件中输入响应的server.后面的数字,例如在1421-0000中的myid输入0.在各个目录下做相同处理,同时还要在每个文件夹建立dataDir和dataLogDir文件夹,这样ZooKeeper配置完毕  
  

4.3 Hadoop配置

4.3.1 将hadoop_home添加到系统环境变量中

4.3.2 配置hadoop-env.sh,添加JAVA_HOME



export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
4.3.3 配置core-site.xml,主要配置ha.zookeeper.quorum等



<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-cluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>1421-0000:2181,1421-0003:2181,1421-0004:2181,1421-0005:2181,1421-0006:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/tmp</value>
<description>
adoop的临时目录,其它目录会基于此路径。本地目录。只可以设置一个值;建议设置到一个足够空间的地方,而不是默认的/tmp下,服务端参数,修改需重启。本地路径
</description>
</property>
</configuration>
4.3.4 配置hdfs-site.xml,主要配置 dfs.nameservices、hdfs HA 特性、hdfs 副本数和 hdfs的 name 与 data 文件的磁盘存放位置,以及 SSH 文件夹位置。



<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
<description>指定命名空间名称,可随易取</description>
</property>
<property>
<name>dfs.ha.namenodes.hadoop-cluster</name>
<value>nn1,nn2</value>
<description>在命名空间下指定NameNode逻辑名</description>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name>
<value>1421-0002:9000</value>
<description></description>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name>
<value>1421-0001:9000</value>
<description></description>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-cluster.nn1</name>
<value>1421-0002:50070</value>
<description></description>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-cluster.nn2</name>
<value>1421-0001:50070</value>
<description></description>
</property>
<property>
<name>dfs.namenode.servicerpc-address.hadoop-cluster.nn1</name>
<value>1421-0002:53310</value>
<description></description>
</property>
<property>
<name>dfs.namenode.servicerpc-address.hadoop-cluster.nn2</name>
<value>1421-0001:53310</value>
<description></description>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
<description></description>
</property>

<property>
<name>dfs.client.failover.proxy.provider.hadoop-cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
<description>出现故障,哪个实现类负责执行故障切换</description>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
<description>一旦NameNode切换,使用ssh方式进行操作</description>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
<description>如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置  </description>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>3000</value>
<description>ssh连接超时的最大时间</description>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/hdfs/journal</value>
<description>配置项用于设置journalnode节点保存本地状态的目录。本地路径</description>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>数据备份数目</description>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://1421-0000:8485;1421-0003:8485;1421-0004:8485;1421-0005:8485;1421-0006:8485/hadoop-journal</value>
<description>这是NameNode读写JNs组的uri。通过这个uri,NameNodes可以读写edit log内容。hadoop-journal指journalnode设置的“dfs.journalnode.edits.dir”下的本地路径</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/hdfs/name</value>
<description>本地磁盘目录,NN存储fsimage文件的地方。可以是按逗号分隔的目录列表,fsimage文件会存储在全部目录,冗余安全。这里多个目录设定,最好在多个磁盘,另外,如果其中一个磁盘故障,不会导致系统故障,会跳过坏磁盘。由于使用了HA,建议仅设置一个。本地路径</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/hdfs/data</value>
<description>本地磁盘目录,HDFS数据应该存储Block的地方。可以是逗号分隔的目录列表(典型的,每个目录在不同的磁盘)。这些目录被轮流使用,一个块存储在这个目录,下一个块存储在下一个目录,依次循环。每个块在同一个机器上仅存储一份。不存在的目录被忽略。必须创建文件夹,否则被视为不存在。本地路径</description>
</property>
</configuration>
4.3.5 mapred-site.xml配置:
  该文档主要配置 MapReduce 的计算框架类型和 Job 日志记录节点内容与保存路径即可,如需对 MapReduce 过程资源分配调优,则可以配置其 mapreduce.map.memory.mb、mapreduce.map.cpu.vcores、mapreduce.map.java.opts 等等,即对其 MapReduce 具体的每项流程进行资源配置,Map、Shuffle 和 Reduce 各占用的内存与 CPU 核数,是否压缩数据传递,在 Map 的到达百分之几时开始进行 Reduce 操作,并行数与 Shuffle 占 Reduce内存中的百分比等等



<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.reduce.shuffle.merge.percent</name>
<value>0.66</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>1421-0003:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>1421-0003:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/hadoop/mr_history/tmp</value>
<description>
参数解释:MapReduce作业产生的日志存放位置。HDFS路径
</description>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/hadoop/mr_history/done</value>
<description>
参数解释:MR JobHistory Server管理的日志的存放位置。HDFS路径
</description>
</property>
</configuration>
4.3.6 yarn-site.xml:这里采用ResourceManager HA配置



<configuration>
<!-- configeration for ResourceManger-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>1423-0001</value>
</property>   

<!-- configeration for NodeManager-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>                                                               
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>                                                               
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value>
</property>
<property>                                                               
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/yarn/local</value>
<description>
数据写入本地文件系统路径的列表用逗号分隔,多条存储路径可以提高磁盘的读写速度
</description>
</property>
<property>                                                               
<name>yarn.nodemanager.log-dirs</name>
<value>/home/hadoop/software/cloud/hadoop-2.6.0/yarn/log</value>
<description>
本地文件系统日志路径的列表逗号分隔,多条存储路径可以提高磁盘的读写速度
</description>
</property>
<!-- HA 配置 =============================================================== -->
<!-- Resource Manager Configs -->
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>2000</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 使嵌入式自动故障转移。HA环境启动,与 ZKRMStateStore 配合 处理fencing -->
<property>
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
<value>true</value>
</property>
<!-- 集群名称,确保HA选举时对应的集群 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 这里RM主备结点需要单独指定,(可选)
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm2</value>
</property>
-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
<value>5000</value>
</property>
<!-- ZKRMStateStore 配置 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>1421-0000:2181,1421-0003:2181,1421-0004:2181,1421-0005:2181,1421-0006:2181</value>
</property>
<property>
<name>yarn.resourcemanager.zk.state-store.address</name>
<value>1421-0000:2181,1421-0003:2181,1421-0004:2181,1421-0005:2181,1421-0006:2181</value>
</property>
<!-- Client访问RM的RPC地址 (applications manager interface) -->
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>1423-0001:23140</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>1423-0002:23140</value>
</property>
<!-- AM访问RM的RPC地址(scheduler interface) -->
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>1423-0001:23130</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>1423-0002:23130</value>
</property>
<!-- RM admin interface -->
<property>
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>1423-0001:23141</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>1423-0002:23141</value>
</property>
<!--NM访问RM的RPC端口 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>1423-0001:23125</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>1423-0002:23125</value>
</property>
<!-- RM web application 地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>1423-0001:23188</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>1423-0002:23188</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm1</name>
<value>1423-0001:23189</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm2</name>
<value>1423-0002:23189</value>
</property>
</configuration>
4.3.7 配置slaves



1421-0000
1423-0001
1423-0002
1423-0003
1421-0003
1421-0004
1421-0005
1421-0006
4.3.8 配置masters



1421-0001

4.3.9 创建需要的目录
  /home/hadoop/software/cloud/hadoop-2.6.0/hdfs/data  
  /home/hadoop/software/cloud/hadoop-2.6.0/hdfs/name
  /home/hadoop/software/cloud/hadoop-2.6.0/hdfs/journal
  /home/hadoop/software/cloud/hadoop-2.6.0/tmp
  /home/hadoop/software/cloud/hadoop-2.6.0/yarn/local
  /home/hadoop/software/cloud/hadoop-2.6.0/yarn/log

5 启动机群

5.1 第一次启动

5.1.1 启动ZK:
  在所有的 ZK 节点执行命令:zkServer.sh start,查看各个 ZK 的从属关系:zkServer.sh status 结果为 Mode: follower or leader,注意:哪个 ZK 节点会成为 leader 默认是通过 ZK 快速选举诞生的,这里就不介绍其快速选举的具体流程了。此时,在各个节点都可以查看到 ZK 进程,在 Shell 窗口下输入jps 即可,内容如下:
  xxxx QuorumPeerMain
xxxx Jps

5.1.2 格式化ZK(仅第一次需要做)
  任意 namenode 节点上执行:hdfs zkfc –formatZK

5.1.3 启动 ZKFC:
  ZookeeperFailoverController 是用来监控 NN 状态,协助实现主备 NN 切换的,所以仅仅在主备 NN 节点上启动就行:hadoop-daemon.sh start zkfc,启动后我们可以看到 ZKFC 进程:
  xxxx Jps
xxxx DFSZKFailoverController

5.1.4 启动JournalNode
  启动用于主备 NN 之间同步元数据信息的共享存储系统 JournalNode,参见角色分配表,在各个 JN 节点上启动:hadoop-daemon.sh start journalnode,启动后在各个 JN 节点都可以看到 JournalNode 进程:
  xxxx QuorumPeerMain
xxxx Jps
xxxx JournalNode

5.1.5 格式化并启动NN
  格式化:hdfs namenode –format hadoop-cluster,注意:只有第一次启动系统时需格式化,请勿重复格式化。在主 NN 节点执行命令启动 NN:hadoop-daemon.sh start namenode
  启动后可以看到 NN 进程:
xxxx Jps
xxxx NameNode
xxxx DFSZKFailoverController

5.1.6 在备 NN 上同步主 NN 的元数据信息:
  hdfs namenode –bootstrapStandby,正常执行时的最后部分日志中,INFO util.ExitUtil: Exiting with status 后的数字为0 则是正常退出,即正常启动。而如果为其他数字,则需要到 hadoop 安装目录下的 log 中查询 namenode 启动失败的原因,根据其描述进行解决。

5.1.7 启动备 NN,在备 NN 上执行命令:hadoop-daemon.sh start namenode

5.1.8 设置主 NN
  (这一步可以省略,这是在设置手动切换 NN 时的步骤,ZK 已经自动选择一个节点作为主 NN 了,如果两个节点都是Standby,那么可以用下面的命令设置主NN,但是因为是自动切换的,所以两个都是standby说明机群有问题)
  hdfs haadmin -transitionToActive nn1

5.1.9 在主 NN 上启动 Datanode,在[nn1]上,启动所有 datanode:hadoop-daemons.sh start datanode

5.1.10 启动yarn:
  因为namenode和resourcemanger都要战勇很大量资源,所以把他俩分开部署。首先在1423-0001启动yarn:start-yarn.sh,在备机启动RM:yarn-daemon.sh start resourcemanager

5.1.11 在运行 MRJS 的  1423-003上执行以下命令启动 MR JobHistory Server:mr-jobhistory-daemon.sh start historyserver

5.2 整个集群的启动与关闭
  在之后如果没有特殊原因,可以通过命令 start-all.sh 和 stop-all.sh 分别启动或关闭整个 Hadoop 集群。
  

6 HBase配置

6.1 配置hbase-env.sh



export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
export HBASE_MANAGES_ZK=false
6.2 配置hbase-site.xml



<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://1421-0002:9000/hbase</value>
<description></description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description></description>
</property>
<property>
<name>hbase.master</name>
<value>1421-0002:6000</value>
<description></description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>1421-0000,1421-0003,1421-0004,1421-0005,1421-0006</value>
<description></description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description></description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/software/cloud/zookeeper-3.4.6/zoodata</value>
<description></description>
</property>
<property>
<name>hbase.zookeeper.property.logDir</name>
<value>/home/hadoop/software/cloud/zookeeper-3.4.6/zoolog</value>
<description></description>
</property>
</configuration>
6.3 配置regionservers:这里将所有的DN作为regionservers



1421-0000
1421-0001
1423-0001
1423-0002
1423-0003
1421-0003
1421-0004
1421-0005
1421-0006
6.4 启动
  Hbase 的启动非常简单,只需要在主节点上输入 start-hbase.sh 即可启动HMaster 与 HRegionServer 守护进程。
  

7 常见问题
  7.1 在我修改了整个机群的机器名和hadoop,zookeeper配置后,在启动hadoop,发现两个namenode都是standby,之前都是好好的,但是又一次启动之后发现两个NN都是standby,那么只能手动切换了,但是手动切换后刚开始是好的,但是过了一小会就海变成了standby,后来看日志发现可能是因为修改了机器名,但是没有重新格式化,导致了文件中主机名不一致,其中有一个错误是关于ZK中edit的,然后只能重新格式化NN,格式化完就好了,但是数据没备份,没了。。



hdfs haadmin -transitionToActive --forcemanual nn1
  附上一些实用命令
  执行命令“hdfs  haadmin”,会显示子命令列表,如下

Usage: DFSHAAdmin [-ns <nameserviceId>]
[-transitionToActive <serviceId>]
[-transitionToStandby <serviceId>]
[-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]
[-getServiceState <serviceId>]
[-checkHealth <serviceId>]
[-help <command>]
  

如果要查看具体用法,使用“hdfs  haadmin  -help  <command>”。其中,
transitionToActivetransitionToStandby是用于在不同状态之间切换的。这些命令没有任何防护错误,很少使用。
failover 初始化一个故障恢复。该命令会从一个失效的NameNode切换到另一个上面。
getServiceState 获取当前NameNode的状态。
checkHealth 检查NameNode的状态。正常就返回0,否则返回非0值。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110298-1-1.html 上篇帖子: 分布式服务框架 Zookeeper 下篇帖子: hadoop学习之ZooKeeper
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表