blob: c54e4be1d5541b6b9c2cbc41c75eb43be8215a45 [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# 环境配置
## 1. 磁盘阵列
### 1.1 配置建议
IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵列存储IoTDB的数据,以达到多个磁盘阵列并发写入的目标,配置可参考以下建议:
1. 物理环境
系统盘:建议使用2块磁盘做Raid1,仅考虑操作系统自身所占空间即可,可以不为IoTDB预留系统盘空间
数据盘
建议做Raid,在磁盘维度进行数据保护
建议为IoTDB提供多块磁盘(1-6块左右)或磁盘组(不建议将所有磁盘做成一个磁盘阵列,会影响 IoTDB的性能上限)
2. 虚拟环境
建议挂载多块硬盘(1-6块左右)
3. 在部署 IoTDB 时,建议避免使用 NAS 等网络存储设备。
### 1.2 配置示例
- 示例1,4块3.5英寸硬盘
因服务器安装的硬盘较少,直接做Raid5即可,无需其他配置。
推荐配置如下:
| **使用分类** | **Raid类型** | **硬盘数量** | **冗余** | **可用容量** |
| ----------- | -------- | -------- | --------- | -------- |
| 系统/数据盘 | RAID5 | 4 | 允许坏1块 | 3 |
- 示例2,12块3.5英寸硬盘
服务器配置12块3.5英寸盘。
前2块盘推荐Raid1作系统盘,2组数据盘可分为2组Raid5,每组5块盘实际可用4块。
推荐配置如下:
| **使用分类** | **Raid类型** | **硬盘数量** | **冗余** | **可用容量** |
| -------- | -------- | -------- | --------- | -------- |
| 系统盘 | RAID1 | 2 | 允许坏1块 | 1 |
| 数据盘 | RAID5 | 5 | 允许坏1块 | 4 |
| 数据盘 | RAID5 | 5 | 允许坏1块 | 4 |
- 示例3,24块2.5英寸盘
服务器配置24块2.5英寸盘。
前2块盘推荐Raid1作系统盘,后面可分为3组Raid5,每组7块盘实际可用6块。剩余一块可闲置或存储写前日志使用。
推荐配置如下:
| **使用分类** | **Raid类型** | **硬盘数量** | **冗余** | **可用容量** |
| -------- | -------- | -------- | --------- | -------- |
| 系统盘 | RAID1 | 2 | 允许坏1块 | 1 |
| 数据盘 | RAID5 | 7 | 允许坏1块 | 6 |
| 数据盘 | RAID5 | 7 | 允许坏1块 | 6 |
| 数据盘 | RAID5 | 7 | 允许坏1块 | 6 |
| 数据盘 | NoRaid | 1 | 损坏丢失 | 1 |
## 2. 操作系统
### 2.1 版本要求
IoTDB 支持 Linux、Windows、MacOS 等操作系统及常见 CPU 型号,支持中标麒麟、银河麒麟、统信、凝思等国产服务器操作系统。
### 2.2 硬盘分区
- 建议使用默认的标准分区方式,不推荐LVM扩展和硬盘加密。
- 系统盘只需满足操作系统的使用空间即可,不需要为IoTDB预留空间。
- 每个硬盘组只对应一个分区即可,数据盘(里面有多个磁盘组,对应raid)不用再额外分区,所有空间给IoTDB使用。
建议的磁盘分区方式如下表所示。
<table>
<tbody>
<tr>
<th>硬盘分类</th>
<th>磁盘组</th>
<th>对应盘符</th>
<th>大小</th>
<th>文件系统类型</th>
</tr>
<tr>
<td rowspan="2">系统盘</td>
<td rowspan="2">磁盘组0</td>
<td>/boot</td>
<td>1GB</td>
<td>默认</td>
</tr>
<tr>
<td>/</td>
<td>磁盘组剩余全部空间</td>
<td>默认</td>
</tr>
<tr>
<td rowspan="3">数据盘</td>
<td>磁盘组1</td>
<td>/data1</td>
<td>磁盘组1全部空间</td>
<td>默认</td>
</tr>
<tr>
<td>磁盘组2</td>
<td>/data2</td>
<td>磁盘组2全部空间</td>
<td>默认</td>
</tr>
<tr>
<td colspan="4">......</td>
</tr>
</tbody>
</table>
### 2.3 网络配置
1. 关闭防火墙
```Bash
# 查看防火墙
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
```
2. 保证所需端口不被占用
(1)集群占用端口的检查:在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 6667、10730、10740、10750 、10760、9090、9190、3000请确保这些端口未被占用。检查方式如下:
```Bash
lsof -i:6667 或 netstat -tunp | grep 6667
lsof -i:10710 或 netstat -tunp | grep 10710
lsof -i:10720 或 netstat -tunp | grep 10720
#如果命令有输出,则表示该端口已被占用。
```
若执行命令后提示 lsof 相关错误(如命令缺失、版本不兼容等),可参考[lsof 异常处理方式](../FAQ/Frequently-asked-questions.md#_1-8-部署-iotdb-时提示-lsof-相关错误-如命令缺失、版本不兼容等-如何正确安装、验证或卸载-lsof)
(2)集群部署工具占用端口的检查:使用集群管理工具opskit安装部署集群时,需打开SSH远程连接服务配置,并开放22号端口。
```Bash
yum install openssh-server #安装ssh服务
systemctl start sshd #启用22号端口
```
3. 保证服务器之间的网络相互连通
### 2.4 其他配置
1. 关闭系统 swap 内存
```Bash
echo "vm.swappiness = 0">> /etc/sysctl.conf
# 一起执行 swapoff -a 和 swapon -a 命令是为了将 swap 里的数据转储回内存,并清空 swap 里的数据。
# 不可省略 swappiness 设置而只执行 swapoff -a;否则,重启后 swap 会再次自动打开,使得操作失效。
swapoff -a && swapon -a
# 在不重启的情况下使配置生效。
sysctl -p
# 检查内存分配,预期 swap 为 0
free -m
```
2. 设置系统最大打开文件数为 65535,以避免出现 "太多的打开文件 "的错误。
```Bash
#查看当前限制
ulimit -n
# 临时修改
ulimit -n 65535
# 永久修改
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
#退出当前终端会话后查看,预期显示65535
ulimit -n
```
## 3. 软件依赖
安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。(V1.3.2.2 及之上版本推荐直接部署JDK17,老版本JDK部分场景下性能有问题,且datanode会出现stop不掉的问题)
```Bash
#下面以在centos7,使用JDK-17安装为例:
tar -zxvf jdk-17_linux-x64_bin.tar #解压JDK文件
Vim ~/.bashrc #配置JDK环境
{ export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9
export PATH=$JAVA_HOME/bin:$PATH
} #添加JDK环境变量
source ~/.bashrc #配置环境生效
java -version #检查JDK环境
```