阿辉的博客

系统 网络 集群 数据库 分布式云计算等 研究

从kafka导入导出数据

导入:
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 10.16.252.48:9092,10.16.252.49:9092,10.16.252.50:9092 --topic k8s_log_pl_old < /data/k8s_log_pl.txt

导出:
/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 10.16.252.48:2181,10.16.252.49:2181,10.16.252.50:2181 --topic k8s_log_pl --from-beginning > /data/k8s_log_pl.txt &

vim 关闭自动注释

在centOS 6和7上,vim默认开启了自动注释,当我们想复制一段文本,而这个文本内其中一行带有#号时,从这一行开始,下面就会每一行都多一个#号,非常的不方便。

可以用以下命令将其关闭:
:set fo-=r
再度开启的命令为:
:set fo=r

PS:
关闭自动缩进(这个对C/C++代码好像无效)
:set noautoindent
关闭C语言缩进:
:set nocindent
再 Shift + Insert

恢复:

:set autoindent
:set cindent

启动生效请修改vimrc文件

参考:https://vim.fandom.com/wiki/Disable_automatic_comment_insertion

kafka 0.9.0.1 安装配置及简单压测

1. 简介

Kafka专为分布式高吞吐量系统而设计。 作为一个更传统的消息代理的替代品。 与其他消息传递系统相比,Kafka具有更好的吞吐量,内置分区,复制和固有的容错能力,这使得它非常适合大规模消息处理应用程序。

在实际使用中,kafka的不同版本协议也不完全一致,不是向下兼容的,使用时需特别注意,我这里使用的是0.9.0.1的版本。

2. 服务器配置

本次安装的服务器为物理机3台:
CPU:双Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
内存:128G配置
10块SAS HDD 1T盘做raid10,挂载到/data1。

主机名 IP 备注
sh-saas-k8s-kafka-online-01 10.16.252.33 zookeeper,kafka
sh-saas-k8s-kafka-online-02 10.16.252.39 zookeeper,kafka
sh-saas-k8s-kafka-online-03 10.16.252.40 zookeeper,kafka

2. kafka安装及配置

kafka需要用到zookeeper,所以我们需要先安装zookeeper。kafka及zookeeper都需要是JAVA语言开发,需要使用JDK,推荐1.8版本。

(更多…)

在kubernetes 上部署ceph Rook测试

1. 部署rook

下载:

mkdir rook
cd rook/

wget https://raw.githubusercontent.com/rook/rook/release-1.0/cluster/examples/kubernetes/ceph/common.yaml
wget https://raw.githubusercontent.com/rook/rook/release-1.0/cluster/examples/kubernetes/ceph/cluster.yaml
wget https://raw.githubusercontent.com/rook/rook/release-1.0/cluster/examples/kubernetes/ceph/operator.yaml

修改配置:

vim cluster.yaml
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  cephVersion:
    image: ceph/ceph:v13 #ceph版本
    allowUnsupported: false
  dataDirHostPath: /data/ceph/rook  #存储的目录
  mon:
    count: 3
    allowMultiplePerNode: false
  dashboard:
    enabled: true
  network:
    hostNetwork: false
  rbdMirroring:
    workers: 0
  annotations:
  resources:
    useAllNodes: true
    useAllDevices: true
    deviceFilter:
    location:
    config:
    directories:
    - path: /data/ceph/rook

部署:

kubectl create -f common.yaml
kubectl create -f operator.yaml
kubectl create -f cluster.yaml

(更多…)

ActiveMQ 配置为每个队列一个kahaDB

ActiveMQ 使用KahaDB存储时,默认的配置是所有队列都存在一个KahaDB内。使用久了会发现一个问题,就是DB文件越来越大,几十上百G。主要原因是当队列内只要有一条消息没有被消费掉,那么ActiveMQ是不会清理KahaDB的文件的。

为此,我们可以加一个过滤器,配置成每个队列一个KahaDB,来缓解这个问题,配置如下:

        <persistenceAdapter>
           <mKahaDB directory="${activemq.data}/kahadb">
            <filteredPersistenceAdapters>
                  <!-- kahaDB per destinations -->
              <filteredKahaDB perDestination="true">
                <persistenceAdapter>
                    <kahaDB ignoreMissingJournalfiles="true"  checkForCorruptJournalFiles="true"  checksumJournalFiles="true" />
                </persistenceAdapter>
              </filteredKahaDB>
             </filteredPersistenceAdapters>
           </mKahaDB>
        </persistenceAdapter>

(更多…)

Ceph分布式存储实战读书笔记-1

1. 初识Ceph

1.1 Ceph核心组件

  • Ceph OSD:全称是Object Storage Device,主要功能包括存储数据,处理数据的复制,恢复,回补,平衡数据分布。并将一些相关数据提供给Ceph Monitor,例如Ceph OSD心跳等。每一个Disk,分区都可以成为一个OSD。
  • Ceph Monitor:Ceph的监控器,主要功能是维护整个集群的健康状态,提供一致性的决策,包含了Monitor map,OSD map,PG(Placement Group)map和CRUSH map。
  • Ceph MDS:全称是Ceph Metadata Server,主要保存的是Ceph文件系统的元数据。注意:Ceph的块存储和Ceph的对象存储都不需要MDS,Ceph FS需要。

一个Ceph集群至少需要一个Ceph Monitor和至少2个Ceph的OSD。

(更多…)

关于maven打包与jdk版本的一些关系

最近让不同JAVA版本的容器maven打包折腾的不行,终于理出了一点头绪。在这里记录下备忘。

1. Maven与jdk版本的关系

先明确一个概念,关高版本JDK运行maven,是可以打出低版本的JAVA目标二进制文件的。比如用jdk 1.8运行maven,可以编译1.8,1.7.1.6等的代码,并输出相应版本的二进制文件。

当然,用低版本的jdk运行maven,是不可能输出高版本的JAVA二进制文件的。

另外:maven用哪个版本的JDK运行,取决于环境变量JAVA_HOME指向的是哪个版本。

(更多…)

通过docker overlay2 目录名查找容器名

有时候经常会有个别容器占用磁盘空间特别大,这个时候就需要通过docker overlay2 目录名查找容器名:

先进入overlay2的目录,这个目录可以通过docker的配置文件(/etc/docker/daemon.json)内找到。然后看看谁占用空间比较多。

[root@sh-saas-k8s1-node-qa-04 overlay2]# du -sc * | sort -rn  | more
33109420        total
1138888 20049e2e445181fc742b9e74a8819edf0e7ee8f0c0041fb2d1c9d321f73d8f5b
1066548 010d0a26a1fe5b00e330d0d87649fc73af45f9333fd824bf0f9d91a37276af18
943208  030c0f111675f6ed534eaa6e4183ec91d4c065dd4bdb5a289f4b572357667378
825116  0ad9e737795dd367bb72f7735fb69a65db3d8907305b305ec21232505241d044
824756  bf3c698966bc19318f3263631bc285bde07c6a1a4eaea25c4ecd3b7b8f29b3fd
661000  15763b72802e1e71cc943e09cba8b747779bf80fa35d56318cf1b89f7b1f1e71
575564  02eaa52e2f999dc387a9dee543028bada0762022cef1400596b5cc18a6223635
486780  4353c30611d7f51932d9af24bb1330db0fdb86faa9d9cae02ed618fa975c697a
486420  562a8874cc345b8ea830c1486c42211b288c886c5dca08e14d7057cacab984c1
486420  4f897e8cd355320b0e7ee1ecc9db5c43d5151f9afa29f1925fe264c88429be4c
448652  a8d0596d123fcc59983ce63df3f3acd40d5c930ed72874ce0a9efbc3234466de
448296  851cc4912edb9989e120acf241f26c82e9715e7fcb1d2bd19a002fcfb894f1f4
417780  20608baacae6bafcd4230a18a272857bc75703a6eefef5c9b40ba4ea19496b11
387388  43a8a76de3b5531e4c12f956f7bfcfcdb8fd38548faf20812cafa9a39813abc5

再通过目录名查找容器名:

[root@sh-saas-k8s1-node-qa-04 overlay2]#  docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "20049e2e445181fc742b9e74a8819edf0e7ee8f0c0041fb2d1c9d321f73d8f5b"
4884, /k8s_taskmanager_flink-taskmanager-java-qa-7879d55f45-xbd74_public-tjpm-flink-java-qa_ad8bf915-a23f-11e9-be66-52540088db9a_0, /data/kubernetes/docker/overlay2/20049e2e445181fc742b9e74a8819edf0e7ee8f0c0041fb2d1c9d321f73d8f5b/work

如果发现有目录查不到,通常是因为容器已经被删掉了,目录没有清理,这时直接清理便可:

docker system prune -a -f

ES内排除节点

ES内排除节点:

curl -XPUT 127.0.0.1:9800/_cluster/settings -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "10.16.16.30,10.16.16.63"
   }
}'

然后可以用以下命令查看迁移过程:
curl -XGET 'http://localhost:9800/_cat/shards?v'| grep RELOCATING