适合于 CentOS 系统
docker 一键安装 curl -sSL https://cdn.jsdelivr.net/gh/yezihack/assets/sh/docker-install.sh |sudo sh #!/bin/bash ################ # CentOS 一键安装 # From: sgfoot.com ################# # 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 设置仓库 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 # 使用阿里源地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装 Docker Engine sudo yum install docker-ce docker-ce-cli containerd.io -y # 启动 systemctl start docker # 测试一下 sudo docker run hello-world echo "安装完毕" docker-compose 安装 docker-compose 是负责 docker 编排使用的仅适合用 CentOS 7
node_export 安装 linux 服务器信息等资源收集安装包
一键安装
curl -sSL http://s1.sgfoot.com/sh/node_exporter.sh |sh 验证 netstat -nplt |grep node_exporter 配置nginx安全访问 如果涉及到外网访问则需要配置密码访问
参考:nginx 添加权限验证
htpasswd -bc /etc/nginx/htpasswd.users sgfoot sgfoot.pass # sgfoot 是帐号名 # sgfoot.pass 是密码 nginx 的vhost配置 node_exporter.conf
server { listen 80; server_name node_exporter.io; location / { auth_basic "Prometheus"; auth_basic_user_file /etc/nginx/htpasswd.users;# 验证文件 proxy_pass http://127.0.0.1:9100; } } 添加 prometheus 节点 配置 host
vim /etc/hosts 127.0.0.1 mysqld_exporter.io vim /data/local/prometheus/prometheus.yml 在 node_exporter.targets 添加 host:port
scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['sgfoot.什么是docker Docker 是 dotCloud 公司开源的一款产品,2013年开源(基于golang开发)。
Docker 英文意思是“搬运工", 是一种容器化技术,将您的运行软件封到一个沙盒里,随意搬运的应用容器引擎。
容器技术是所有云应用的基石,也把互联网升到到下一代。足以说明 docker 的强大之处。
Google 自2004年开始使用容器技术,对Docker的贡献之大,开源了Cgroup和Imctfy项目,还开源了容器管理系统 Kubernetes.
向开源致敬!
Docker 架构 采用 c/s 模式体系架构, Docker 客户端与 Docker Daemon 守护进程通信。
Docker Daemon: 是Docker服务端的守护进程, 用来监听 Docker API 的请求和管理 Docker 对象,比如镜像、容器、网络和 Volume。 Docker Client: docker client 是我们和 Docker 进行交互的最主要的方式方法 Docker Registry:用来存储 Docker 镜像的仓库 Images:镜像,镜像是一个只读模板 Containers:容器,容器是一个镜像的可运行的实例,容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间 底层技术支持:Namespaces(做隔离)、CGroups(做资源限制)、UnionFS(镜像和容器的分层) Docker 核心技术 Docker 的基础是 Linux 容器(LXC) 等技术
三大底层技术实现 Docker 的关键技术
Namespaces 解决了进程,网络及文件系统的隔离 命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法 CGroups 解决了CPU,内存等资源隔离 Namespaces 并不能够为我们提供物理资源上的隔离。比如CPU,内存等。这样会导致多个Docker抢占物理资源。 Control Groups(简称 CGroups)就是能够隔离宿主机器上的物理资源,例如 CPU、内存、磁盘 I/O 和网络带宽。 UnionFS 解决了镜像隔离 Union File System,联合文件系统 将多个不同位置的目录联合挂载到同一个目录,将相同的部分合并本篇主要介绍,基本数据类型、控制语句和数据结构及函数、方法、接口等知识。为后面学习打下基础,有个基本的认识。也为您将来进阶做准备。
基础语法 之前我们在Go 实践教程-工具及运行(三)写过一个“hello world”程序,讲解了三个概念:package,import,main
注释 写代码时必不可少需要写一些代码注释,方便以后回过头来看程序。Go里面提供两种方法注释
// 单行注释 (注意 //之后需要一个空格,之于为什么,go doc 方便自动生成文档抓取注释) /* 多行注释,在这里面都属于被注释的内容 */ 标识符 标识符用来命名变量,类型等程序实体。允许由大小写字母(a-z|A-Z)和数据(0~9)及下划线(_)组成,但第一个字符必须由字母和下划线组成
a := 10 // ok _a := 22 // ok case := "abc"// 无效变量 error 9a := 10 // 无效变量 error 变量命名 Go 语言的变量命名比较独特,如果你熟悉其它语言你会不习惯的。
先变量名 后跟类型名称
全局变量
必须有 var 关键字
import main var num int func main() { } // 优雅的方法,适合多个变量, 也适用于import 里 var ( num int age int name string ) // 等价于 var num int var age int var name string 函数内的局部变量生产服务器根目录空间余量告急,你可能会选择对重装系统重装,这种方式对生产服务器不友好,也不推荐。网上你可以看到很多文章进行LVM进行根目录扩容,当然一顿猛操作后,发现无计于事,因为你的根目录挂载的磁盘根本不是LVM方式,无法这样操作。在不重装,也不影响线上生产,有没有一种方式可以实现动态扩容呢?答案:有
概要 使用rsync命令带属性方式转移数据 然后再使用lvm方式进行对某些目录进行重装挂载 这样就可以扩出容量。 LVM 原理 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用
掌握4个基本的逻辑卷概念
PE(Physical Extend) 物理扩展(底层) PV(Physical Volume) 物理卷(底层) VG(Volume Group) 卷组 LV(Logical Volume) 逻辑卷(上层) 工作原理
常用命令操作
# 格式为物理卷 pvcreate /dev/vda1 [可以多个] pvdisplay #查看物理卷 pvs #查看物理卷列表 # 创建卷组 vgcreate vg1 /dev/vda1 # vg1 是卷组名称, /dev/vda1 是分区名称 vgdisplay # 查看卷组 vgs # 查看卷组列表 # 创建逻辑卷 lvcreate -n lv1 -L 50G vg1 # lv1 是逻辑卷名称, 50G 是转成逻辑卷大小 vg1就是卷组 lvdisplay # 查看逻辑卷信息 lvs # 查看逻辑卷列表 实战 查看你的磁盘分区信息(df -h) 查看你的磁盘信息(fdisk -l) 对指点磁盘进行分区操作(fdisk /dev/vdc 每个人的磁盘分区名称不一样) 创建物理卷 创建卷组 创建逻辑卷 对逻辑卷进行格式化 ext4 挂载某目录 # 1.经过前面二篇 Go 简介,Go 环境配置 学习,大家对 Golang 有个大概的了解了, 环境也配置好了,就差上手写代码啦,今天主要介绍 Golang 的开发工具与工具链,如何写出第一个 “Hello World”
Goland 开发工具 编写 Golang ,首选 Goland 开发工具,当然 Goland 是收费的(可试用30天)。国内也有破解教程。自行 Google,在此也会介绍一种快捷的方式
下载 Goland
https://www.jetbrains.com/go/
安装
官方提供:Window, Mac, Linux 三个平台的安装包。
安装过程下一步,下一步即可,在此不赘述。
激活
可能会遇到用一段时间就失效啦,你只需要再次来到这个网站下载激活码,重新激活一次即可。
http://idea.medeming.com/jetbrains/
设置 Go Modules
File -> Settings -> Go -> Go Modules
 将 `GOPROXY=https://goproxy.cn,direct` 填写到 Environment 处。 用于 Go GET 加速下载依赖包。 第一个 Go 程序 新建项目
File -> New -> Project
新建 Go 文件
右击 awesomeProject -> New -> Go -> 选择"Simple Application"docker 的优点,就是简化所有的安装流程。移植性好,安装快捷。
在安装之前,Elasticsearch 与 Kibana 需要注意版本一致。
当前IK分词器也需要一致。见 github release
dockerhub es dockerhub kibana github ik analysis Docker 创建网络栈 后面创建 elaticsearch, kibana 需要用到。
docker network create es-network Elasticsearch 安装 docker pull elasticsearch:7.14.1 docker run -d --name elasticsearch --net es-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.1 --net es-network 使用刚创建的网络栈 -e "discovery.type=single-node" 设置配置参数为单结点集群 --name elasticsearch 设置容器名称 -p 9200:9200 设置端口映射,前为宿主机端口,后为容器里的端口。 -d 后台运行模式 elasticsearch:7.14.1 镜像名称,通过docker images 查看,若没有会自动下载 查看日志,发现一处警告: docker logs elasticsearch
{ "type":"deprecation.elasticsearch", "timestamp":"2021-09-15T03:55:39,835Z", "level":"DEPRECATION", "component":"o.本教程基于 Go1.11版本展开, 也就是官方提供 Go Module 功能。
安装 Golang 国内推荐下载点 Go 语言中文网 ,默认大家使用 CPU Amd 64 架构
最新版本:go1.15.2
Window https://studygolang.com/dl/golang/go1.15.2.windows-amd64.msi
傻瓜式一键安装即可。安装目录推荐 c:\\Go
Linux cd /usr/local/src/ wget https://studygolang.com/dl/golang/go1.15.2.linux-amd64.tar.gz tar -zxvf go1.15.2.linux-amd64.tar.gz -C /usr/local/ MacOS https://studygolang.com/dl/golang/go1.15.2.darwin-amd64.pkg
cd /usr/local/src/ wget https://studygolang.com/dl/golang/go1.15.2.darwin-amd64.tar.gz tar -zxvf go1.15.2.darwin-amd64.tar.gz -C /usr/local/ 设置 Goproxy 国内加速代理,用于加速下载 github 或 google 上的包
window设置方法
临时生效设置方法 # 启用 Go Modules 功能 $env:GO111MODULE="on" # 配置 GOPROXY 环境变量 $env:GOPROXY="https://goproxy.io,direct" 永久生效设置方法 计算机 图标上鼠标右击 选择 属性 选择左侧 高级系统设置 GO111MODULE="on" GOPROXY="https://goproxy.为什么写这个教程 Golang在中国发展非常不错,国内关于 Golang 的书籍也挺多,网上的 Golang 教程也不在少数。为什么我还要重复造这个轮子呢?我自学 Golang 也是看网上各种教程,学至今日,我回头看过来。刚开始学习时会写个 “Hello World”,懂 Golang 语法,然后实际项目应用上感觉还是从零开始一样,刚开始无法自己去独立构建一个项目,只能采用模仿公司前辈写的项目再加领导指点一下,在写项目其间也遇到各种坑,如指针,Chan,切片等问题。而网上的教程大多数都是一种教科书式的,基本模式是:学习理论 -> 实践 -> 入坑 -> 理论 -> 实践 。 完成一个完整的闭环,你算是从理论入门到实践入门再到理论与实践结合入门。
这个教程的初衷就是让你一次:实践入门,至于基本理论原理涉及篇幅太大,不过其间也会略提一些。我也会推荐一些非常棒的教程供大家学习。
本入门系列只带你实践入门,教你写出日常工程代码
历史 Go 语言起源于 2007 年,并在 2009 年正式发布 Go 是一门非常年轻的语言,它“兼具 Python 的简洁,C/C++ 的性能与安全” Go 被誉为“21世纪的 C 语言" 创始人 Rob Pike Go语言项目总负责人,贝尔实验室 Unix 团队成员 Ken Thompson 贝尔实验室 Unix 团队成员,C语言、Unix 和 Plan 9 的创始人之一 Robert Griesemer 就职于 Google,参与开发 Java HotSpot 虚拟机,对语言设计有深入的认识,并负责 Chrome 浏览器和 Node.js 使用的 Google V8 JavaScript 引擎的代码生成部分。 特点&优势 语言层面支持并发编程 跨平台编译 特性少,语法简单,易于上手 静态类型语言 丰富的标准库和丰富的工具链 可直接编译成机器码,不依赖其他库 内嵌C支持 支持GC 支持反射 匿名函数和闭包 用途 网络编程 系统编程 并发编程 分布式编程 知名项目 Kubernetes Etcd Prometheus Grafana Docker Hugo Influxdb 推荐教程 Go入门指南 Go 语言设计与实现 — 底层实现原理一一讲透 Go 语言101—也是讲底层实现的不可多得的教程 Go 语言学习资料与社区索引最近同事发了一篇硬核!30 张图解 HTTP 常见的面试题 文章给我看,一打开就被博主的博客风格吸引,条理清晰,采用总分总的形式写的,图文并茂,文章虽然很长,看完也不觉得累,而且还乐在其中,将久违的知识又重新复习了一篇,又重新学习了一篇,加深了理解。文章写得好,做个搬运工,整理下方便以后查阅。也感谢博主小林。
图解计算机系统原理 序列 超链 1 20 张图揭开「内存管理」的迷雾,瞬间豁然开朗 2 进程、线程基础知识全家桶,30 张图一套带走 3 多线程为了同个资源打起架来了,该如何让他们安定? 4 凉了!张三同学没答好「进程间通信」,被面试官挂了…. 5 一口气搞懂「文件系统」,就靠这 25 张图了 图解计算机网络 序列 超链 1 硬核!30 张图解 HTTP 常见的面试题 2 30张图解:键入网址后,到网页显示,其间发生了什么? 3 20 张图解: ping 的工作原理 4 35 张图解:被问千百遍的 TCP 三次握手和四次挥手面试题 5 30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制 6 IP 基础知识全家桶,45 张图一套带走 7 实战!我用 Wireshark 让你“看见“ TCP 8 TCP 半连接队列和全连接队列满了会发生什么?又该如何应对? 9 面试官:换人!他连 TCP 这几个参数都不懂