先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
MARATHON_MASTER=zk://localhost:2181/mesos
MARATHON_ZK=zk://localhost:2181/marathon
MARATHON_TASK_LAUNCH_TIMEOUT=600000
MESOS_NATIVE_JAVA_LIBRARY=/usr/lib64/libmesos.so.22
MESOS_NATIVE_LIBRARY=/usr/lib64/libmesos.so.22
EOF
使用以下命令以启动 marathon 服务:
service marathon start
**安装并设置 Mesos 从节点**
确保全部 Mesos 从节点皆完成了 Docker 配置。欲了解更多在 RHEL LE 之上安装并配置 Docker 的细节信息,请参阅 Power 系统上的 Linux 环境 Docker 安装指南。
使用以下命令以安装必要软件包:
yum install mesos python-mesos
配置 Mesos 从节点。在"/etc/sysconfig/mesos-slave"当中编辑"HOSTNAME"变量,将其指向 Mesos 主节点 IP,而后设置 "MESOS\_EXECUTOR\_REGISTRATION\_TIMEOUT" 与 "MESOS\_IP" 变量。
举例来说,如果 mesos-master 的 IP 地址为 192.168.122.31,而 mesos-slave 为 192.168.122.48,那么配置文件内容将如下所示:
This file contains environment variables that are passed to mesos-slave.
To get a description of all options run mesos-slave --help; any option
supported as a command-line option is also supported as an environment
variable.
The mesos master URL to contact. Should be host:port for
non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
MESOS_master=192.168.122.31:5050
MESOS_EXECUTOR_REGISTRATION_TIMEOUT=10mins
MESOS_IP=192.168.122.48
For isolated sandbox testing
#MESOS_master=127.0.0.1:5050
For a complete listing of options execute ‘mesos-slave --help’
MESOS_log_dir=/var/log/mesos
MESOS_work_dir=/var/run/mesos
MESOS_containerizers=docker,mesos
systemd cgroup integration
MESOS_isolation=‘cgroups/cpu,cgroups/mem’
MESOS_cgroups_root=‘system.slice/mesos-slave.service’
MESOS_cgroups_hierarchy=/sys/fs/cgroup
使用以下命令以重启该 mesos-slave 服务:
service mesos-slave restart
打开网络端口。在默认情况下,mesos-slave 利用端口 5051 进行通信。确保其不要被本地防火墙所屏蔽。如果大家需要使用防火墙,请运行以下命令以开启一个面向公共区域的 TCP 端口:
firewall-cmd --zone=public --add-port=5051/tcp -permanent
firewall-cmd -reload
Marathon UI 可通过 http://mesos\_master\_ip:8080 网站进行访问。举例来说,如果 mesos-master 的 IP 地址为 192.168.122.31,那么 Marathon UI 链接则可通过 http://192.168.122.31:8080 网站进行访问。
**通过 Marathon 进行应用程序部署**
相关源代码可通过 [GitHub]( ) 网站获取。
此源代码当中包含 Docker 文件以及相关设置脚本,用于在英特尔与 Power(ppc64le)系统之上构建 MySQL Docker 镜像。
在以下示例当中,192.168.122.48 将作为运行在 Mesos 服务器与 Marathon 之上系统的 IP 地址。
大家可以利用 Marathon UI 或者 REST API 直接部署一款应用。举例来说,以下代码即利用 Marathon 的 REST API 进行应用程序部署:
curl -X POST http://192.168.122.48:8080/v2/apps -d @mysqlcontainer.json -H “Content-type: application/json”
#cat mysqlcontainer.json
{
“id”: “mysql”,
“cpus”: 0.5,
“mem”: 64.0,
“instances”: 1,
“container”: {
“type”: “DOCKER”,
“docker”: {
“image”: “ppc64le/mysql”,
“network”: “BRIDGE”,
“portMappings”: [
{ “containerPort”: 3306, “hostPort”: 0, “servicePort”: 0, “protocol”: “tcp” }
]
}
},
“env”: {
“MYSQL_ROOT_PASSWORD” : “password”,
“MYSQL_USER” : “test”,
“MYSQL_PASSWORD” : “test”,
“MYSQL_DB” : “BucketList”
}
}
一个非零 "hostPort" 会被分配给某个随机端口。当然,大家也可以明确指定"hostPort"值。确保在"hostPort"中指定的各个端口包含相关资源。举例来说,如果需要使用 7000 到 8000 范围的端口,同时将 31000 到 32000 设定为默认端口范围,则请使用以下选项:
–resources=“ports(*):[7000-8000, 31000-32000]”
**利用 Marathon 框架接入已部署完成的服务**
本章节将探讨如何利用 MySQL 服务经由 Marathon 接入已部署完成的服务,并在示例 Web 应用中加以使用。相关源代码可通过 [GitHub]( ) 网站获取。这部分示例代码包含同时面向英特尔与 PowerPC LE(即ppc64le)架构的 Docke r文件。
**利用 Docker 链接接入服务**
在服务部署完成之后,大家需要将其发现而后进行接入,即立足于应用程序使用接入该服务的链接。当前服务的运行可能依赖于其它服务。因此,接入容器就变得非常重要。当使用 Marathon 接入服务时,请注意以下几项要点:
Mesos/Marathon 并不具备使用 Docker 链接别名的方法。因此,如果大家的应用程序配置使用到链接别名,则其将无法正常起效。举例来说,如果 Web 应用程序依赖于一套数据库容器且使用包含数据库链接前缀(例如 "DB\_PORT" 或者 "DB\_TCP\_ADDR" 等)的环境变更,请确保该应用配置不依赖于链接别名前缀。作为连接两端的应用及服务需要被部署在同一主机之上方可实现通信。
使用限制参数在同一节点之上部署各相连容器,具体如以下示例所示:
$ curl -X POST -H “Content-type: application/json” localhost:8080/v2/apps -d ‘{
“id”: “sleep-cluster”,
“cmd”: “sleep 60”,
“instances”: 3,
“constraints”: [[“hostname”, “CLUSTER”, “a.specific.node.com”]]
}’
要使用以上代码,首先使用"hostname"参数启动 mesos-slave,具体如下所示:
mesos-slave --master=zk://192.168.122.48:2181/mesos --containerizers=docker,mesos --executor_registration_timeout=10mins --ip=192.168.122.253 --hostname=Ubuntu
##### 使用 Marathon API 启动相连容器
这部分设置以 OpenPOWER(即 PowerPC 架构)为基础环境。当然,大家也可以在英特尔环境下使用同样的指令。
将目标容器名称作为值指定给链接键。另外,使用限制参数以确保新容器被部署在目标容器运行所在的同一主机之上。
curl -X POST http://192.168.122.48:8080/v2/apps -d @flaskcontainer.json -H “Content-type: application/json”
cat flaskcontainer.json
{
“id”: “flaskappcontainer”,
“cpus”: 0.5,
“mem”: 64.0,
“instances”: 1,
“container”: {
“type”: “DOCKER”,
“docker”: {
“image”: “ppc64le/flaskapp”,
“network”: “BRIDGE”,
“portMappings”: [
{ “containerPort”: 80, “hostPort”: 0, “servicePort”: 0, “protocol”: “tcp” }
],
“parameters”: [
{ “key”: “link”, “value”: “mesos-b81f9a21-3133-49de-acf6-988226eb6874-S18.5d3dcaa7-05c6-4a5b-af68-dba32b7d1835”}
]
}
},
“constraints”: [
[ “hostname”,“CLUSTER”,“ubuntu” ]
]
}
**使用 mesos-DNS 实现服务发现与连接**
这里的 mesos-DNS 负责创建指向 IP 地址的应用,而端口编号则映射运行在 Mesos 集群之上的各应用程序。
Mesos-DNS 可通过 [GitHub]( ) 网站获取。其要求配合 Go 编译器使用,并可直接构建于任何平台之上。
大家可以通过 [GitHub]( ) 网站找到包含源代码的示例配置文件。
以下为用于本次设置的示例配置文件内容:
{
“zk”: “zk://192.168.122.48:2181/mesos”,
“masters”: [“192.168.122.48:5050”],
“refreshSeconds”: 60,
“ttl”: 60,
“domain”: “mesos”,
“port”: 53,
“resolvers”: [“8.8.8.8”],
“timeout”: 5,
“listener”: “0.0.0.0”,
“SOAMname”: “ns1.mesos”,
“SOARname”: “root.ns1.mesos”,
“SOARefresh”: 60,
“SOARetry”: 600,
“SOAExpire”: 86400,
“SOAMinttl”: 60,
“dnson”: true,
“httpon”: true,
“httpport”: 8125,
“externalon”: true,
“IPSources”: [“netinfo”, “mesos”, “host”],
“EnforceRFC952”: false
}
欲了解与 mesos-DNS 配置参数相关的更多细节信息,请参阅 [Mesos-DNS Configuration Parameters 网站]( )。
大家可以选择在任意主机之上运行 mesos-dns 目录,或者通过 Marathon 框架加以运行。举例来说:
curl -X POST http://192.168.122.48:8080/v2/apps -d @mesos-dns.json -H “Content-type: application/json”
此为通过 Marathon 启动 mesos-dns。
curl -X POST http://192.168.122.48:8080/v2/apps -d @mesos-dns.json -H “Content-type: application/json”
此为通过Marathon启动mesos-dns。
cat mesos-dns.json
{
“cmd”: “
“cpus”: 1.0,
“mem”: 1024,
“id”: “mesos-dns”,
“instances”: 1,
}
直接在该主机上使用以下命令以运行 mesos-dns:
mesos-dns -v=1 -config=<path_to_config_json>
利用以下格式命名该项服务:
..
如此一来,该 MySQL 服务的 DNS 名称将为"mysql.marathon.mesos"。
Mesos-DNS 还能够为各项服务创建 DNS SRV 记录。一条 SRV 记录负责将一条服务名称与一个主机名称及一个 IP 端口相关联。 Mesos-DNS 为服务生成一条名为 "\_task.\_protocol.framework.domain" 的 DNS-SRV 记录。
在这里:
* Task(即任务)代表所启动的应用/服务(在本示例中为 MySQL)。
* Protocol>(即协议)为 UDP 或者 TCP。
* framework(框架)为 Marathon 或者任意其它框架。
* Domain(域)即为集群域(在本示例中为 Mesos)。
此条 SRV 记录可由其它 Marathon 应用用于发现服务。举例来说,任何需要配合 MySQL 服务的应用都能够从 SRV 记录当中找到 "\_mysql\_tcp.marathon.mesos"。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e227390bfb3d ppc64le/mysql “/setup.sh” 3 seconds ago Up Less than a second 0.0.0.0:31172->3306/tcp mesos-fabb6e52-064a-425a-a501-330bc772cd55-S16.85fb3e7c-b2ca-412f-ac75-1ec314bee575
dig _mysql._tcp.marathon.mesos -t SRV
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> _mysql._tcp.marathon.mesos -t SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2126
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;_mysql._tcp.marathon.mesos. IN SRV
;; ANSWER SECTION:
_mysql._tcp.marathon.mesos. 60 IN SRV 0 0 31172 mysql-4huw5-s16.marathon.slave.mesos.
;; ADDITIONAL SECTION:
mysql-4huw5-s16.marathon.slave.mesos. 60 IN A 192.168.122.48
;; Query time: 1 msec
;; SERVER: 192.168.122.48#53(192.168.122.48)
;; WHEN: Mon Feb 08 14:27:38 IST 2016
;; MSG SIZE rcvd: 147
以下为利用 dnspython 模块查询 SRV 记录,从而检索对应主要及端口以访问该项服务的示例 Python 代码:
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
08 14:27:38 IST 2016
;; MSG SIZE rcvd: 147
以下为利用 dnspython 模块查询 SRV 记录,从而检索对应主要及端口以访问该项服务的示例 Python 代码:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-bnMJ7G1C-1713546817476)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!