docker-更改默认存储目录 root dir

确保停止docker服务

1
# systemstl stop docker.service

2、修改/etc/docker/daemon.json文件值,文件不存在需手动创建

1
2
#mkdir /data/docker
# vim /etc/docker/daemon.json

新增以下信息:

1
2
3
{
"data-root": "/data/docker"
}

3、启动docker服务# systemstl start docker.service

4、docker info 验证Docker Root Dir的值 是否已修改为/data/docker

docker-ce yum安装

CentosOS 7 安装docker-ce

1
2
3
4
5
6
7
8
9
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

influxdb 基本使用

influxdb 基本使用

1
2
3
4
5
6
7
8
9
10
11
12
使用数据库
>show databases;
>use db1;

查询表
>show measurements;
>select * table1 where endpoint='xxxxxxxxxxxxxxxxxxxxx' LIMIT 10;

删除表
>drop measurement table1;


docker-清空container logs

docker默认会记录容器从一开始运行到现在为止所有的日志内容,而且目前docker并没有提供日志管理工具对日志内容进行清理。 只能手工进行清理。

  1. 找出docker container日志文件所在的路径

    1
    docker inspect --format='{{.LogPath}}' <container_name_or_id>
  2. 删除或者清空日志文件内容

    1
    echo |sudo tee $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)

golang判断当前主机是物理机还是虚拟机

windows下命令行获取:

1
wmic path Win32_ComputerSystem get Model

linux下命令行获取:

1
dmidecode | egrep -i 'system-product-name|product|domU'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
func isVirtualMachine() (bool, error) {
model := ""
var cmd *exec.Cmd

if runtime.GOOS == "windows" {
cmd = exec.Command("cmd", "/C", "wmic path Win32_ComputerSystem get Model")
} else { // linux
cmd = exec.Command("/bin/bash", "-c", "dmidecode | egrep -i 'system-product-name|product|domU'")
}

stdout, err := cmd.Output()

if err != nil {
return false, err
}
model = string(stdout)

if strings.Contains(model, "VirtualBox") || strings.Contains(model, "Virtual Machine") || strings.Contains(model, "VMware Virtual Platform") ||
strings.Contains(model, "KVM") || strings.Contains(model, "Bochs") || strings.Contains(model, "HVM domU") {
return true, nil
}

return false, nil
}

如果使用夜莺n9e需要更改代码

将 agent.yml中 cate 改为 auto,同时agent/report/report.go 更改如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
func report() error {
name, err := os.Hostname()
if err != nil {
return fmt.Errorf("cannot get hostname: %s", err)
}

fields, err := gatherFields(config.Config.Report.Fields)
if err != nil {
return err
}

//这里考虑区分物理机还是虚拟机, 当类型是auto 时, 判断处理
var hostCategory string
if config.Config.Report.Cate == "auto" {
isVM, _ := utils.IsVirtualMachine()
if isVM {
hostCategory ="virtual"
}else{
hostCategory ="physical"
}
logger.Debugf("ident: %s , category: %s", ident,hostCategory)
}

form := hostRegisterForm{
SN: sn,
IP: ip,
Ident: ident,
Name: name,
Cate: hostCategory, //config.Config.Report.Cate
UniqKey: config.Config.Report.UniqKey,
Fields: fields,
}

content := form.SN + form.IP + form.Ident + form.Name + form.Cate + form.UniqKey
var keys []string
for key := range fields {
keys = append(keys, key, fields[key])
}
sort.Strings(keys)

for _, key := range keys {
content += fields[key]
}

form.Digest = str.MD5(content)

servers := address.GetHTTPAddresses("ams")
for _, i := range rand.Perm(len(servers)) {
url := fmt.Sprintf("http://%s/v1/ams-ce/hosts/register", servers[i])

logger.Debugf("report: %+v", form)

var body errRes
err := httplib.Post(url).JSONBodyQuiet(form).Header("X-Srv-Token", config.Config.Report.Token).SetTimeout(time.Second * 5).ToJSON(&body)
if err != nil {
js, _ := json.Marshal(form)
logger.Errorf("report payload: %s, token: %s", string(js), config.Config.Report.Token)
return fmt.Errorf("curl %s fail: %v", url, err)
}

if body.Err != "" {
return fmt.Errorf(body.Err)
}

return nil
}

return fmt.Errorf("all server instance is dead")
}

mariadb 10.1 yum安装

1
2
3
4
5
6
7
# MariaDB 10.1 CentOS repository list - created 2020-03-09 13:45 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

After the file is in place, install MariaDB with:

1
sudo yum install MariaDB-server MariaDB-client

vim 报错E437

E437: terminal capability “cm” required

这个错误一般是环境变量TERM没有配置或者配置错误所致。

解决办法:

执行export TERM=xterm;

或者将export TERM=xterm 添加至/etc/profile文件中即可。

或者

方法1:要是偷懒,那直接执行命令 export TERM=linux 或者 export TERM=xterm

方法2:要下一劳永逸,将上述命令写入 /etc/bashrc 文件确保永久生效,切记保存后顺手执行 source /etc/bashrc

mariadb 常见故障解决

常见mariadb 故障解决

1
2
3
4
5
6
7
8
9
10
11
1. 启动异常
sed -i 's#safe_to_bootstrap: 0#safe_to_bootstrap: 1#' /var/lib/docker/volumes/mariadb/_data/grastate.dat

2. galera cluster 启动一个节点时出现this member has applied more events than the primary component.Data loss is possible. Aborting.
解决:

cd /var/lib/mysql

rm grastate.dat ib_log* -f

done

使用kolla安装的openstack mariadb为集群所有节点无法启动

转载R芮R 最后发布于2018-08-20 22:31:00 阅读数 228 收藏

展开

当在做测试时,把所有的openstack节点都关机,再开启做测试时,发现mariadb galera集群启不来,相当于所有的mariadb集群都停止了(跟所有节点断电情况相似),这时候怎么办呢,重新建立galera集群

方法1:、如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动

编辑第一个控制节点的 cat /etc/kolla/mariadb/config.json

“command”: “/usr/bin/mysqld_safe –wsrep_cluster_address=gcomm://“,

方法2:

选择节点一个mariadb节点,修改安全启动状态。

sed -i ‘s/safe_to_bootstrap: 0/safe_to_bootstrap: 1/g’ /var/lib/docker/volumes/mariadb/_data/grastate.dat

grep “New cluster view” /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log |awk -F: ‘END { print $1”:”$2”:”$3 $6”:”$7}’ # 显示如下,显示序列号

180822 21:45:32 [Note] WSREP 05d50ff4-a17b-11e8-8cfc-02fd70253581:140645, view# -1

修改seqno:-1

重启这个mariadb容器

docker restart mariadb

接着接入这个容器

docker exec -it mariadb /bin/bash

执行mysqld_safe –wsrep-new-cluster

然后再重启其他的docker节点

为能正常启动 galera集群,最好正常关闭mariadb docker,命令docker stop mariadb

shell-经典常用命令宝典

  1. 清空某目录下所有日志文件

    1
    #find /var/log/kolla/ -type f -name "*.log*" -exec cp /dev/null {} 2>&1 \;  
  1. 网卡路由 IP 设置

    1
    2
    3
    4
    5
    6
    7
    #ip link set eth0 up             # 开启网卡
    #ip link set eth0 promisc on # 开启网卡的混合模式
    #ip link set eth0 promisc offi # 关闭网卡的混个模式
    #ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
    #ip link set eth0 mtu 1450 # 设置网卡最大传输单元
    #ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
    #ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口