使用Docker创建redis、MQ集群

仅供测试使用

RabbitMQ

镜像地址 https://hub.docker.com/_/rabbitmq/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker run -d --hostname rabbit1 --name rabbit1 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcluster' -p 30000:5672 -p 30001:15672 rabbitmq:3-management-alpine
docker run -d --hostname rabbit2 --name rabbit2 --link rabbit1:rabbit1 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcluster' -p 30002:5672 -p 30003:15672 rabbitmq:3-management-alpine
docker run -d --hostname rabbit3 --name rabbit3 --link rabbit1:rabbit1 --link rabbit2:rabbit2 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcluster' -p 30004:5672 -p 30005:15672 rabbitmq:3-management-alpine
docker exec -i -t rabbit2 \bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'

阅读更多

手动安装k8s 1.8集群

TL;DR

准备工作

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
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
cat > /etc/hosts <<EOF
192.168.4.182 node1
192.168.4.183 node2
192.168.4.184 master1
EOF
ssh-keygen
ssh-copy-id root@master1
ssh-copy-id root@node2
ssh-copy-id root@node1
mkdir -p /root/local/bin
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
mkdir -p /root/local/bin
export PATH=$PATH:/root/local/bin

阅读更多

IPMI远控以及CentOS ks自动安装相关

在做自动安装系统的时候遇到了IPMI,PXE相关问题,机器型号IBM S3650M3 可以通过BIOS设置,如果已经安装了系统,
也可以用命令来设置。

1
2
3
4
5
6
7
8
9
10
11
ipmitool -H 192.168.19.4 -U USERID -P PASSW0RD lan print 1
ipmitool -I open lan print 1 #此命令和上面效果一样,不过此处是在本地执行,上一条是远程执行
ipmitool -I open lan set 1 ipaddr 192.168.9.4 #在隧道1设置ip
ipmitool -I open lan set 1 netmask 255.255.0.0 #在隧道1设置掩码
ipmitool -I open lan set 1 defgw ipaddr 192.168.1.1 #在隧道1设置网关
ipmitool -I open lan set 1 access on #开启隧道1访问

阅读更多

开源日志解决方案-EFK

导入GPG密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
导入安装源

1
2
3
4
5
6
7
8
9
10
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

阅读更多

Docker network探究

当你安装完docker之后,默认已经有了5种网络模式,可以通过docker info查看
分别是bridge host macvlan null overlay.

bridge

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
[
{
"Name": "bridge",
"Id": "1c006820eb42b4f57f95c91dcb694df703afebd4fcb666cc58ead63877b57deb",
"Created": "2018-01-10T06:05:53.925311686-05:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
当你未指定网络的时候,默认用的就是bridge网络。例如
docker run --rm radial/busyboxplus:curl
ip a
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
ip r
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 src 172.17.0.2
ping d.cn
PING d.cn (183.131.214.42): 56 data bytes
64 bytes from 183.131.214.42: seq=0 ttl=52 time=13.337 ms

阅读更多

编写shell脚本的相关实践

首先放出Google的shell编码规范
http://zh-google-styleguide.readthedocs.io/en/latest/google-shell-styleguide/contents/

阅读更多

kubeadm安装单机k8s环境

什么是kubeadm?就是采用静态pod的方式,来运行k8s的四大组件。

阅读更多

sysctl、ulimit相关系统调优

linux sysctl优化
sysctl是一个允许改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
sysctl的相关配置文件在/etc/security/limits.conf/etc/sysctl.conf

阅读更多

RAID和lvm相关知识

RAID

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。
简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,
从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,
其向主机环境提供了成本适中、数据可靠性高的高性能存储。
RAID通常有软件RAID和硬件RAID之分,软件依靠算法,需要消耗一定的CPU资源,linux可以用mdadm命令实现,
对于硬件RAID,可以在系统启动之前的进行设置。
通常有以下几种

阅读更多

LVS Keepalived实践

载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法。本文介绍基于传输层的负载均衡器LVS。

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 用现在的观点来看就是个4层(传输层tcp/udp)的负责均衡器。 它是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

阅读更多