作者文章归档:felix

gitlab 搭建go modules私有仓库


gitlab 搭建go modules私有仓库

重点:

1.go get需要用域名的方式。 2.go get默认访问的是https。

目前策略

go get ---> nginx(ssl 反代gitlab)-->gitlab

实现
go get gittest.xxxx.com/Goland/gotogit

以gitlab(192.168.128.128)仓库为例测试

1.域名准备
1.1 域名分配
1.2  域名解析
gittest.xxxx.com  192.168.128.128
2.准备https(gittest.xxxx.com)反向代理

​ 2.1 申请ssl...

Read more

容器状态监控


容器状态监控

根据实际需要写了两版监控容器状态的golang程序。

//容器状态监控
//报警发送企业微信webhook
//每一分钟获取一次容器运行状态
//包括一分钟内容器是否重启,包括启动容器名称,主机ip,外网IP,启动时间,获取启动前三分钟日志的方法(并没有实际执行)
//获取一分钟内已经关机的容器,获取包括容器的名称,外网IP,关机时间
//获取当容器超过指定大小后的,提醒功能

方式一

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/docker/docker...

Read more

ELK集群搭建简略记录


ELK集群搭建简略记录

1.规划

三台主机搭建集群,对应关系如下

10.0.0.4 node1 
10.0.0.8 node2
10.0.0.9 node3

2.添加host(各节点)

cat >>  /etc/hosts <<EOF
10.0.0.4 node1 
10.0.0.8 node2
10.0.0.9 node3 
EOF

3.下载安装elk(各节点)

mkdir /elastic
mkdir -p /data/elasticsearch/{data,logs}
wget https://artifacts.elastic.co/downloads/e...

Read more

记录OPENSSL 以及SAN 扩展的方法


自建根CA

1.1方法1
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=GD/L=SZ/O=TESTONE/CN=domain1/CN=domain2/CN=domain3"
1.2方法2
openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt  -nodes -days 3650  -subj "/C=CN/ST=GD/L=SZ/O=TESTONE/CN=...

Read more

tcp_tw_recle参数引发的SYN重传


公司的网络环境下打开App加载奇慢或者无响应,特此记录下曲折的排错历程。这是一个从网络到服务器,从SYN不断重传转到net.ipv4.tcp_tw_recycle = 0的过程。作为公司的网络管理者,我想说不能局限于别人的怀疑,不能局限于自己的思维定式,要不然解决问题真的很难。

问题背景:

​ 公司的开发的APP在获取数据的时候无法加载,或者加载极慢。刚开始发现问题时表现如下:

  • 平时打开App访问页面基本没有什么异常,打开App上页面也挺流畅(测试人员也不密集测试)。

    • 一般都是上线测试当天,多人访问就大概率会出现页面没有响应。导致测试开发人员十分不满,怒气值拉满。

      ...

Read more

Golang 之SSH理解


以前写过Golang通过SSH执行交换机操作,但是对于证书认证这一块没有深究。这次通过读gopkg文件,理解更深了一步。

代码案例

package main

import (
    "bytes"
    "fmt"
    "golang.org/x/crypto/ssh"
    "io/ioutil"
    "log"
)

func main() {
    //hnowhost文件对应/root/.ssh/known_hosts。
    var knowhost = []byte("192.168.14.137 ecdsa-sha2-nistp256 AAAAE2VjZ...

Read more

使用velero去备份k8s集群


先决条件:

  1. k8s>1.10,主要考虑restic的兼容性
  2. 集群内部署dns
  3. 已经安装kubectl

velero安装

  1. 下载velero

    wget https://github.com/vmware-tanzu/velero/releases/download/v1.5.2/velero-v1.5.2-linux-amd64.tar.gz
    tar -zxvf velero-v1.5.2-linux-amd64.tar.gz
    mvmv velero-v1.5.2-linux-amd64 velero
    cd velero
    cp velero  /usr/local/bin/
    ve...

Read more

Golang之Protobuf格式定义和代码生成


1.Protobuf格式定义(首部)

  • protobuf代码说明

addresssbook.proto

syntax = "proto3";  //指定proto为版本3
  package tutorial;  //包命名,确保不同项目的包名不冲突,导入其他proto文件会用到。

  import "google/protobuf/timestamp.proto";
  //导入其他目录下的proto包,个人理解这里的导入包的位置,为指定源目录的相对位置,即protoc -I=$SRC-DIR目录位置,如果没有指定,则为当前执行命令目录。

  option go_package ...

Read more

以注册mysql驱动举例init()函数的注册行为(golang)


​ Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。

​ 但是import _ "github.com/go-sql-driver/mysql" 的意义不是很好理解。

​ 为此,我通过自己写的三个简单程序,演示init()的注册行为。

代码的目录组织结构如下:

awesomeProject/talkischeap/main.go  //主函数
awesomeProject/talkischeap/showmecode/main...

Read more

Golang通过SSH执行交换机操作


Golang通过SSH执行交换机操作

​ 简单实现通过输入指令,两步执行交换机命令。

  • 输入执行换机的账号和密码。可以一次输入多个账号和密码,为了方便操作,规定了输入格式。如 用户名;主机IP;密码|用户名;主机IP;密码。举例admin;192.168.56.10;h3csw1|admin;192.168.56.11;h3csw2
  • 输入要执行的命令,以;分割。例如system-view;dis cu;

​ 存在问题:

  • 不够灵活。输入方式限制太死,输入特别字符也可能存在错误。
  • 过于简陋。
  • 功能简单。

​ 不过我的目的已经达到,我主要是了解ssh的...

Read more