中国中小企业网站建设情况,批量查询网站是否正常,兼职做效果图的网站,wordpress virtue一、VMware上集群部署ClickHouse #xff08;一#xff09;网络设置 1. 通过修改文件设置网络参数 #xff08;1#xff09;CentOS 在CENTOS上的网络安全工具#xff08;十六#xff09;容器特色的Linux操作_lhyzws的博客-CSDN博客中我们提到过可以使用更改配置文件的方式… 一、VMware上集群部署ClickHouse 一网络设置 1. 通过修改文件设置网络参数 1CentOS 在CENTOS上的网络安全工具十六容器特色的Linux操作_lhyzws的博客-CSDN博客中我们提到过可以使用更改配置文件的方式来设置网络。在CentOS上该配置文件位于/etc/sysconfig/network-scripts下一般来说一个“连接”就会有一个。比如如果设备ens160有2个连接则该目录下会有ifcfg-ens160和ifcfg-ens160-1两个文件。 一般来说需要改动这个地方一般都是为了在集群部署时设置静态IP地址下面专门对比了手工配置IP和自动配置IP情况下的不同配置。注意BOOTPROTO如果不用dhcp的话取值为none不是no也不是static。否则系统只有在重启的时候认识其它见下文时候不认识我在这里坑好久。 手工配置的情况 自动配置的情况 [rootpig network-scripts]# cat ifcfg-ens160 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOnone DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno NAMEens160 UUID…… DEVICEens160 ONBOOTyes IPADDR192.168.21.11 PREFIX24 GATEWAY192.168.21.2 DNS1192.168.21.2 [rootpig network-scripts]# cat ifcfg-ens160 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOdhcp DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno NAMEens160 UUID…… DEVICEens160 ONBOOTyes DNS1192.168.21.2 配置好后重启系统网络设置就应该更改过来了。 2Ubuntu Ubuntu类的系统中这个配置文件一般在/etc/network/interfaces中一样也是改了重启。据说在Ubuntu 18.04版本以后改用了netplan工具进行网络配置所以可能找不到/etc/network/interfaces。那么在/etc/netplan下的yml文件就是要更改的对象。更改完成后执行netplan apply即可。我没装所以没试。 3重启服务使修改生效 修改/etc/sysconfig/network-scripts下的配置文件后直接重启服务而不是重启系统。在非图形窗口的Centos系统中这种方法应该是比较正规的一种。在Centos8之前应该使用systemctl restart network.service或者是service network restart但是在centos8以后这个服务被NetworkManager替代注意大小写所以在我试验的centos-stream-8中是这样的
[rootpig network-scripts]# systemctl restart NetworkManager.service
[rootpig network-scripts]# systemctl status NetworkManager.service
● NetworkManager.service - Network ManagerLoaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2022-12-22 09:39:15 EST; 9s agoDocs: man:NetworkManager(8)Main PID: 6365 (NetworkManager)Tasks: 4 (limit: 49135)Memory: 5.6MCGroup: /system.slice/NetworkManager.service└─6365 /usr/sbin/NetworkManager --no-daemon
12月 22 09:39:15 pig NetworkManager[6365]: info [1671719955.9362] device (ens160): state change: ip-config - ip-check (reason none,
12月 22 09:39:15 pig NetworkManager[6365]: info [1671719955.9365] policy: set ens160 (ens160) as default for IPv4 routing and DNS
12月 22 09:39:15 pig NetworkManager[6365]: info [1671719955.9525] modem-manager: ModemManager available4使用网络管理工具重启服务 在centos8以后配合NetworkManager服务系统提供了nmclinetwork manager client工具帮助用户进行网络管理。centos7之前虽然没有但是可以通过yum安装
[rootpig network-scripts]# yum install /usr/bin/nmcli -y
上次元数据过期检查2:45:11 前执行于 2022年12月22日 星期四 06时58分29秒。
软件包 NetworkManager-1:1.39.0-1.el8.x86_64 已安装。
依赖关系解决。
软件包 架构 版本 仓库 大小升级:NetworkManager x86_64 1:1.40.4-1.el8 baseos 2.3 MNetworkManager-adsl x86_64 1:1.40.4-1.el8 baseos 153 kNetworkManager-bluetooth x86_64 1:1.40.4-1.el8 baseos 179 kNetworkManager-libnm x86_64 1:1.40.4-1.el8 baseos 1.9 MNetworkManager-team x86_64 1:1.40.4-1.el8 baseos 158 kNetworkManager-tui x86_64 1:1.40.4-1.el8 baseos 353 kNetworkManager-wifi x86_64 1:1.40.4-1.el8 baseos 199 kNetworkManager-wwan x86_64 1:1.40.4-1.el8 baseos 185 k
事务概要升级 8 软件包
…………………………nmcli工具挺有意思不仅可以用来查看IP地址等配置还可以关闭/重启有线/无线网络禁用、启用指定设备对指定设备禁用、启用、增加网络连接。如果熟练掌握相关命令用起来简直和windows网络适配器配置的图形交互一样方便。 所以修改配置文件后重置一下网络连接即可前提是配置文件要写对否则nmcli启动连接失败会直接把连接干掉在连接名字都没有了的情况下是无法up连接的。那么你只能被迫使用nmcli d connect重新连接设备结果是新增了一个连接/etc/sysconfig/network-scripts下会多出一个配置文件。并且即使是删了新的配置文件无论如何up那个错的文件都会被系统忽略。系统会直接使用hdcp分配IP地址——我掉的就是这个坑
[rootpig network-scripts]# nmcli c reload
[rootpig network-scripts]# nmcli c
NAME UUID TYPE DEVICE
ens160 d24eda1a-cd43-4de7-ba21-1641abd3d540 ethernet ens160
[rootpig network-scripts]# nmcli c up ens160
连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/14当然也可以不改配置文件直接使用nmcli add一个新的连接并进行配置。但是我查看了一下帮助就放弃了——字段实在是太多了
rootpig network-scripts]# nmcli c add --help
Usage: nmcli connection add { ARGUMENTS | help }
ARGUMENTS : COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([|-]setting.property value)]COMMON_OPTIONS:type typeifname interface name | *[con-name connection name][autoconnect yes|no][save yes|no][master master (ifname, or connection UUID or name)][slave-type master connection type]TYPE_SPECIFIC_OPTIONS:ethernet: [mac MAC address][cloned-mac cloned MAC address][mtu MTU]wifi: ssid SSID[mac MAC address][cloned-mac cloned MAC address][mtu MTU][mode infrastructure|ap|adhoc]2. 通过命令设置网络参数 1ifconfig ifconfig可能是最常用的网络配置命令了只不过现在被ip命令替代一些系统可能默认不提供ifconfig工具需要手动从net-tools工具包安装。 使用ifconfig查看所有网络接口名称
[rootpig1 ~]# ifconfig
lo: flags73UP,LOOPBACK,RUNNING mtu 65536
……
virbr0: flags4099UP,BROADCAST,MULTICAST mtu 1500
……
[rootpig1 ~]# ifconfig -a
ens160: flags4098BROADCAST,MULTICAST mtu 1500
……
lo: flags73UP,LOOPBACK,RUNNING mtu 65536
……
virbr0: flags4099UP,BROADCAST,MULTICAST mtu 1500
……可以看到使用-a参数才能看到所有接口包括被关闭的如果有关闭的接口可以使用ifconfig 接口名 up命令启动
[rootpig1 ~]# ifconfig ens160 up 使用ifconfig命令更改网络配置
[rootpig1 ~]# ifconfig ens160 192.168.21.121 netmask 255.255.255.0 broadcast 192.168.21.255
[rootpig1 ~]# ifconfig
ens160: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 192.168.21.121 netmask 255.255.255.0 broadcast 192.168.121.255…… ……RX packets 21 bytes 1886 (1.8 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 38 bytes 5147 (5.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0需要注意的一点就是使用ifconfig更改的网络参数并没有即刻影响ifcfg-ens160文件。如果改完后运行ifconfig ens160 down ifconfig ens160 up会发现网络配置又回到了文件中给出的状态。 2ip
[rootpig1 ~]# ip addr change 192.168.21.121/24 dev ens160
[rootpig1 ~]# ip addr show
…… ……
2: ens160: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP group default qlen 1000……inet 192.168.21.21/24 brd 192.168.21.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet 192.168.21.121/24 scope global secondary ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fea3:fab7/64 scope link noprefixroute valid_lft forever preferred_lft forever
[rootpig1 ~]# ip addr del 192.168.21.121/24 dev ens160
[rootpig1 ~]# ip addr show
…… ……
2: ens160: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP group default qlen 1000……inet 192.168.21.21/24 brd 192.168.21.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fea3:fab7/64 scope link noprefixroute valid_lft forever preferred_lft forever使用ip更改IP地址有点麻烦不论是用add还是用change命令原来的地址都会留下还需要使用del删除一下。 不过使用ip命令的一个好处是可以查看默认网关
[rootpig1 ~]# ip route show
default via 192.168.21.2 dev ens160 proto static metric 100
192.168.21.0/24 dev ens160 proto kernel scope link src 192.168.21.21 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown最后多说一句使用命令更改并不如直接修改配置文件来得稳妥。比如会出现网段、广播地址和掩码不匹配网段和网关不匹配网段和默认DNS不匹配等等情况。这些命令本身并不会帮助我们检查。所以使用命令也需要把网络相关参数依次配一遍并不比直接更改配置文件后重启来得简单。 如果是容器那么最好是使用docker的run参数在启动时就把一切都设置好。 3. 更改hostname 更改hostname可以使用hostnamectl命令也可使用nmcli命令。或者更直接点使用hostname命令 如
[rootpig ~]# hostnamectl --static set-hostname pig1
[rootpig ~]# hostnamectlStatic hostname: pig1Icon name: computer-vmChassis: vmMachine ID: ……Boot ID: ……Virtualization: vmwareOperating System: CentOS Stream 8CPE OS Name: cpe:/o:centos:centos:8Kernel: Linux 4.18.0-373.el8.x86_64Architecture: x86-64又如
[rootpig ~]# nmcli g hostname
pig
[rootpig ~]# nmcli g hostname pig1
[rootpig ~]# nmcli g hostname
pig1直接使用hostname命令也可以查看主机名称
[rootpig ~]# hostname
pig1
[rootpig ~]# hostname pig
[rootpig ~]# hostname
pig然而实际上hostname就存储在/etc/hostname文件中不论在哪种操作系统都可以通过更改该文件的内容来更改主机名然后重启系统即可。
[rootthebigpig ~]# sed -i 1c pig1 /etc/hostname
[rootthebigpig ~]# cat /etc/hostname
pig1但是直接更改文件内容的办法在容器中会失效会出现诸如“sed: cannot rename ……: Device or resource busy”的错误。据说是因为使用sed会造成文件inode发生变化因为sed实际使用一个新的文件替换了源文件。解决办法是使用vi/vim。 但是即使是更改了文件包括使用hostname命令更改一旦容器重新start容器名称又会被改回去——因为容器就不是这么玩的——应该在run的时候就是用—hostnane选项指定好
C:\Users\lhyzwdocker run -it --hostname pig --name pigu ubuntu:latest bash
rootpig:/# cat /etc/hostname
pig4. 更改主机名与IP映射关系 构建集群还需要在每个节点上记录主机名与IP的映射关系这个不论在哪个系统中都在/etc/hosts文件中 rootpig:/# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 pig rootpig:/# 将其它节点的IP地址和主机名添加到hosts文件中即可。 二安装ZooKeeper ClickHouse依托zeekeeper进行集群节点间的并发操作协同管理。如果配置文件中没有指定zookeeperclickhouse将无法使用复制表这一有力工具。由于zeekeeper对延迟非常敏感所以clickhouse官方不建议将zookeeper与clickhouse在同一节点上叠加安装。当然作为实验我们不打算在有限的主机内开5个以上的虚拟机——所以粗放地将它们安装在了一起——请不要盲从。 1. 安装JDK ZooKeeper是基于Java开发的所以其运行需要JVM环境。 OpenJDK我们选择11版本安装过程不赘述 [rootpig01 share]# yum install java-11-openjdk* -y 2. 下载ZooKeeper ZooKeeper的安装需要从官方网站 Apache ZooKeeper下载压缩包。在网站上找到最新版本ClickHouse要求版本不低于3.4.0的下载链接 需要点进去才是真正的安装链接 也就是在官方推荐的http站点上右键选择复制链接然后在linux中wget即可
[rootpig01 share]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz 3.解压与配置 下载完成后可将ZooKeeper解压到指定的文件夹一般多解压到了/usr/local/zookeeper下根据可使用的节点对配置文件进行对应更改/usr/local/zeekeeper/conf/zoo.cfg最后是构建data目录和log目录并在data目录下设置myid。 1 解压到指定文件夹
[rootpig01 local]# tar zxvf ~/share/apache-zookeeper-3.8.0-bin.tar.gz -C /usr/local/
apache-zookeeper-3.8.0-bin/docs/
apache-zookeeper-3.8.0-bin/docs/images/
apache-zookeeper-3.8.0-bin/docs/skin/
apache-zookeeper-3.8.0-bin/docs/images/2pc.jpg
apache-zookeeper-3.8.0-bin/docs/images/bk-overview.jpg
apache-zookeeper-3.8.0-bin/docs/images/favicon.ico
apache-zookeeper-3.8.0-bin/docs/images/state_dia.dia
apache-zookeeper-3.8.0-bin/docs/images/state_dia.jpg
apache-zookeeper-3.8.0-bin/docs/images/zkAuditLogs.jpg
apache-zookeeper-3.8.0-bin/docs/images/zkarch.jpg
apache-zookeeper-3.8.0-bin/docs/images/zkcomponents.jpg
apache-zookeeper-3.8.0-bin/docs/images/zknamespace.jpg
……默认解压出来的目录会携带版本信息为方便使用将其名称改简单些
[rootpig01 local]# pwd
/usr/local
[rootpig01 local]# ls
apache-zookeeper-3.8.0-bin bin etc games include lib lib64 libexec sbin share src
[rootpig01 local]# mv apache-zookeeper-3.8.0-bin zookeeper
[rootpig01 local]# ls
bin etc games include lib lib64 libexec sbin share src zookeeper
[rootpig01 local]#2建立配置文件 在zookeeper目录下得conf子目录中有名为zoo_example.cfg的配置文件示例将其拷贝在相同目录下命名为zoo.cfg
[rootpig01 conf]# cp zoo_sample.cfg zoo.cfg 配置文件中需要定制的内容主要为2个部分①数据目录②节点群配置 zoo.cfg文件内容如下更改部分加粗显示
# The number of milliseconds of each tick
tickTime2000
# The number of ticks that the initial
# synchronization phase can take
initLimit10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 数据目录
dataDir/usr/local/zookeeper/data
# the port at which the clients will connect
clientPort2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount3
# Purge task interval in hours
# Set to 0 to disable auto purge feature
#autopurge.purgeInterval1## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.classNameorg.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost0.0.0.0
#metricsProvider.httpPort7000
#metricsProvider.exportJvmInfotrue# 节点群
server.0192.168.119.10:2888:3888
server.1192.168.119.11:2888:3888
server.2192.168.119.12:2888:3888
server.3192.168.119.13:2888:3888节点群格式如上使用server.N表示第几个节点N取值0至255IP地址为节点IP。后面两个冒号所跟的端口分别为zookeeper信息交换端口和选举端口选择默认的2888和3888即可。 3设置节点标识 设置的最后是为配置文件中指定的数据目录生成对应的目录并在目录文件下建立一个名为myid的文件该文件的内容比较简单即为配置文件节点群中server.N的N对应其所在节点的IP地址填写即可比如192.168.119.10节点对应填写0
[rootpig00 zookeeper]# mkdir data
[rootpig00 zookeeper]# cd data
[rootpig00 data]# echo 0myid
[rootpig00 data]# cat myid
04.启动服务 网上一些配置指南还会进一步添加zookeeper的环境变量在~/bashrc文件中添加一下变量然后source一下主要是为了设置zookeeper的默认执行路径。这一步其实可选如果不介意启动服务的时候多敲几次键盘的话 # ZooKeeper Envexport ZOOKEEPER_HOME/usr/local/zookeeperexport PATH$PATH:$ZOOKEEPER_HOME/bin使用zookeeper安装目录下bin子目录中的zkServer.sh脚本以start为参数即可启动zookeeper。每个节点上均需启动
[rootpig00 bin]# pwd
/usr/local/zookeeper/bin
[rootpig00 bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED以status为参数可以查看各个节点的服务状态以及各节点在zookeeper“选举团”中的身份
[rootpig00 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower[rootpig01 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower[rootpig02 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader[rootpig03 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower可以看到哪个节点为Leader与启动顺序关系不大是zookeeper根据算法确定的。其中Leader用来负责客户端的Write类型请求Follower用来负责客户端的Read类型请求这里还有一种没有出现Observer是一种特殊的Follower也负责客户端的Read类型请求但不参与选举。 5. 测试 使用与服务程序同目录下的客户端程序zkCli.sh可以访问zookeeper服务
[rootpig00 bin]# ./zkCli.sh
/usr/bin/java
Connecting to localhost:2181
……………………
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /zookeeper
[config, quota]
[zk: localhost:2181(CONNECTED) 2]6. 生产环境配置 另外根据clickhouse官方的配置建议在生产环境下需要打开zookeeper的log文件自动清除开关以避免大量日志超出存储容量造成系统崩溃
autopurge.snapRetainCount3
autopurge.purgeInterval1三部署ClickHouse集群 部署ClickHouse集群前最好是先理解ClickHouse的分片、副本和复制表这几个核心概念因为配置文件中最为主要的几个参数都与之相关。 1. 理解分片、副本和复制表 关于分片和副本ClickHouse实战 四、集群的副本与分片 - 知乎 (zhihu.com)这篇文章讲得还是比较透彻的这里仅结合我们所构建的环境对应理解。 1分片Shard 分片是对表结构的水平分割。想象数据库中的一张大表其记录达到上亿行。那么为了检索更快一个直观的方式就是将表按照某一可排序键分成上下2部分每部分用一台机器来负责。那么以后检索该表的时候根据该键的值就可以很快确定应该哪台机器干活又或者说如果检索与该键无关那也可以2台机器并行开始干活每台机器只需要检索半张表就够了。 在我们的测试环境中用了4个节点pig00-pig03我们使用pig00pig01为一组pig02和pig03为一组2组来负责将整个表分为2个分片。所以pig00和pig01为shard 1pig02和pig03为shard 2。 2副本Replica ClickHouse的数据副本机制不是全局的是以表为对象的。也就是说不是向RAID那样所有存储都会被强制的存储几份而是只有使用ReplicaMergeTree的表引擎才会按照配置文件的要求制作副本其它类型的表引擎则不使用副本。 在我们的测试环境中pig01为pig00的副本pig03为pig02的副本。 3复制表 复制表是clickhouse中可以支持副本的。在clickhouse的所有表引擎中只有合并树表引擎MergeTree可以支持副本。①由于clickhouse的副本是表级别的所有服务器中可以同时存在复制表和非复制表。②副本并不依赖于分片所以每个分片可以有它自己的独立副本。 之所以加粗上面2句话是因为它反应了clickhouse集群和数据组织的核心思想。 创建复制表的典型语句如下
CREATE TABLE table_name
(EventDate DateTime,CounterID UInt32,UserID UInt32
) ENGINE ReplicatedMergeTree(/clickhouse/tables/{layer}-{shard}/table_name, {replica})
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)其中{layer}{shard}和{replica}由配置文件中的macros标识进行定义指定复制表及其副本的存储路径和名称等信息。所以一方面它是可以由我们自行指定的另一方面我们指定它必须遵守约定即不同的分片不同的副本不能取一样的名称。 一个典型的宏定义如下所示
macroslayer05/layershard02/shardreplicaexample05-02-1/replica
/macros关于layer和shard都是分片标识符由于clickhouse采用了两级分片机制所以需要两个标识。但多数情况下我们仅指定shard就可以。 从集群部署的角度看宏定义我们完全可以将其理解为节点的配置标识比如该节点赔给第几分区作为第几副本则可以对应设置shard和replica的名称。 关于分片、副本和复制表的概念官方指南中有更为详细的描述可见数据副本 | ClickHouse Docs 2. ClickHouse的配置文件 如我们在基于容器的单节点clickhouse部署中看到的ClickHouse支持多配置文件管理。主配置文件是/etc/clickhouse-server/config.xml。clickhouse会在解析完主配置文件后递归解析目录/etc/clickouse-server/config.d下的xml格式配置文件。所有的配置文件都要求有相同的根元素通常是clickhouse。 主配置文件中的一些配置可以通过replace或remove属性被子目录下的配置文件覆盖如果两者都未指定则按照递归关系使用后解析的配置覆盖前面的。这也是我们在基于容器的单节点中看到的做法。 从这个角度说配置clickhouse最好不要直接修改主文件。更友好的方式是在config.d目录下建立专属的配置文件。 按照前面的描述除了允许远程访问相关的网络配置外clickhouse集群最需要配置的参数主要包括①zookeeper集群②clickhouse集群节点的分片及副本配置③宏定义配置。 pig00节点的配置文件如下
clickhouse!--允许从主机网络或其他容器进行远程连接--listen_host::/listen_hostlisten_host0.0.0.0/listen_hostlisten_try1/listen_try!--记录日志--loggerconsole1/console/logger!--ZooKeeper集群配置--zookeepernodehost192.168.119.10/hostport2181/port/nodenodehost192.168.119.11/hostport2181/port/nodenodehost192.168.119.12/hostport2181/port/nodenodehost192.168.119.13/hostport2181/port/node/zookeeper!--clickhouse集群设置--remote_servers!--集群名称创建分布式表时需要使用--pig_cluster!--分片1--shardreplicahost192.168.119.10/hostport9000/port/replica!--分片1的副本1--replicahost192.168.119.11/hostport9000/port/replica/shard!--分片2--shardreplicahost192.168.119.12/hostport9000/port/replica!--分片2的副本1--replicahost192.168.119.13/hostport9000/port/replica/shard/pig_cluster/remote_servers!--分片与副本标识宏定义创建复制表时需要使用--!--192.168.119.10第1分片的第0副本即原数据--macrosshard01/shardreplicapig_cluster-01-0/replica/macros
/clickhouse配置完成后将其scp到其它节点的对应config.d目录下。并对应更改宏定义中的对应分片标识和副本编号即可。 PS配置文件中IP也可以用主机名比如pig00替代。 3. 集群启动与测试 配置完成后直接systemctl restart clickhouse-server.service即可。 所有节点启动完成后可使用客户端clickhouse-client执行select * from system.clusters查看集群状态 可见我们的4个节点都按照配置文件的设置构建了2分片1副本的集群pig_cluster。 至于其它的集群则是主配置文件中那些示范的配置没有被我们注释掉的结果。强迫症患者可以考虑将示例注释掉眼不见心不烦。 六、Docker上部署ClickHouse 待续……