InfluxDB 安装

目前InfluxDB提供了多环境的支持,这些环境包含常用的UNIX/Linux、MaxOS和Windows环境等,除了源码编译外这些环境都不用额外安装Golang语言开发包。本书主要以InfluxDB1.7.4这个稳定版本来学习,软件下载地址见官方网站 https://portal.influxdata.com/downloads/。

在安装InfluxDB前还需要注意以下4点:

  • 安装时需要使用root或管理员权限;
  • 默认情况下InfluxDB监听了两个端口8086和8088,其中8086端口是客户端连接InfluxDB服务端的HTTP API,8088端口是RPC服务主要用于数据的备份与还原使用。除了这些端口外InfluxDB还提供了一些自定义插件的端口,所有的这些端口可以通过InfluxDB配置文件来修改,该文件默认安装情况下位于/etc/influxdb/influxdb.conf。关于每个端口的具体用途我们就不一一介绍,读者可以参考官方文档https://docs.influxdata.com/influxdb/v1.7/administration/ports/ 了解它们;
  • InfluxDB使用本地的UTC时间作为数据的时间戳。我们可以通过NTP(Network Time Protocol,中文翻译网络时间协议)服务作为主机之前的时间同步,如果时间出现异常,数据的时间戳也会错误。
  • InfluxDB启动后要确认防火墙(iptables)是否已经开通了8086和8088等主要端口的访问,确认方法如下:

确认防火墙是否已经开通了8086和8088的端口访问

1
2
$ sudo iptables -L -nv --line | grep 8086
$ sudo iptables -L -nv --line | grep 8088

在防火墙默认开启的情况下,以上命令如果未grep到8086和8088端口,需要增加防火墙的授权策略,开启8086和8088端口访问本机,命令如下所示:

开启8086和8088端口的访问

1
2
$ sudo iptables -I INPUT 1 -p tcp --dport 8086 -j ACCEPT
$ sudo iptables -I INPUT 1 -p tcp --dport 8088 -j ACCEPT

下面让我们开始学习在各环境下的InfluxDB的安装。

1.RedHat & CentOS 环境
我们通过官方提供的RPM包方式来安装InfluxDB,具体安装方式如下:

1
2
$ wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.4.x86_64.rpm
$ sudo yum localinstall influxdb-1.7.4.x86_64.rpm

通过sudo service命令启动InfluxDB。

1
$ sudo service influxdb start

2. Ubuntu & Debin 环境

我们通过官方提供的Deb包方式来安装InfluxDB,具体安装方式如下:

1
2
$ wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.5_amd64.deb
$ sudo dpkg -i influxdb_1.7.5_amd64.deb

通过sudo service命令来启动InfluxDB。

1
$ sudo service influxdb start

3 Max OS X & OS X 环境
在MaxOS环境下官方提供了两种方式来安装InfluxDB:

方式1:
通过压缩包来安装。

1
2
$ wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.4_darwin_amd64.tar.gz
$ tar -xvzf influxdb-1.7.4_darwin_amd64.tar.gz

使用sudo Influxd命令+配置文件的方式来启动。

1
2
3
$ cd ./influxdb-1.7.4-1/usr/bin/
$ sudo ./influxd -config ../../etc/influxdb/influxdb.conf &

方式2
通过brew来安装InfluxDB。brew是Mac下的一个包管理工具类似于CentOS下的Yum。
首先来安装brew。

1
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

通过brew命令来安装InfluxDB。

1
2
$ brew update
$ sudo brew install influxdb

启动InfluxDB。

1
$ sudo brew services influxdb start

使用brew services命令来确认启动是否成功。默认情况下会显示InfluxDB的运营状态。

1
2
3
4
$ sudo brew services list    
Name Status User Plist
elasticsearch stopped
influxdb started /Users/djangowang/Library/LaunchAgents/homebrew.mxcl.influxdb.plist

4. Windows Binaries 环境

官方提供Windows环境的InfluxDB不同版本压缩包,我们可以在浏览器下载InfluxDB1.7.4版本压缩包。

1
https://dl.influxdata.com/influxdb/releases/influxdb-1.7.4_windows_amd64.zip

下载后解压缩Unzip influxdb-1.7.4_windows_amd64.zip后,如图2-1所示。

图2-1 Windows版本的InfluxDB包内容

可以双击Influxd.exe文件来启动InfluxDB Windows版本守护进程,见图2。

启动InfluxDB守护进程,图2

InfluxDB启动后,可以在运行->cmd中执行“netstat -an”系统命令 查看是否有8086端口存在,如果存在说明InfluxDB启动成功,见图3。

Netstat命令查看Windows监听的端口,图3

5. Docker Image 环境

首先安装Docker,但Docker环境并不在本书介绍范围内,读者可以根据自己的实际情况通过网上教程来安装Docker环境,以下来介绍在Docker环境具备的情况下安装InfluxDB。

1
$ sudo docker pull influxdb:1.7.4

通过Docker image命令来找到下载的Influxdb1.7.4版本。

1
2
3
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/influxdb 1.7.4 f343a497a227 13 days ago 239 MB

启动Docker镜像。

1
$ sudo docker run -d p 8086:8086 --expose 8090 --name docker.io/influxdb:1.7.4

分别介绍一下Docker参数的含义:

  • -d:容器在后台运行;
  • -p:将容器内端口映射到宿主机端口,格式为 宿主机端口:容器内端口;8086是InfluxDB的HTTP API端口;
  • –name:容器名称。

6. 二进制文件安装
官方提供了4种二进制文件方式安装分别为64-bit、b4-bit(static)、32-bit和ARM环境。读者可以根据自己实际情况来选择不同的环境来安装。二进制方式安装比较适合企业内网无法与互联网通信的情况,我们可以通过一台中转服务器将代码下载到本机再传输到内网更多服务器来安装。以下Linux Binaries(64-bit)为例。

1
2
$ wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.4_linux_amd64.tar.gz
$ tar -xvzf influxdb-1.7.4_linux_amd64.tar.gz

解压后目录结构如下,可以看到这种方式安装所有的启动命令、配置文件、库文件和帮助文档都在一个根目录下,非常容易迁移和安装使用:

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
$ tree

.
├── etc
│ ├── influxdb
│ │ └── influxdb.conf
│ └── logrotate.d
│ └── influxdb
├── usr
│ ├── bin
│ │ ├── influx
│ │ ├── influxd
│ │ ├── influx_inspect
│ │ ├── influx_stress
│ │ └── influx_tsm
│ ├── lib
│ │ └── influxdb
│ │ └── scripts
│ │ ├── influxdb.service
│ │ └── init.sh
│ └── share
│ └── man
│ └── man1
│ ├── influx.1.gz
│ ├── influxd.1.gz
│ ├── influxd-backup.1.gz
│ ├── influxd-config.1.gz
│ ├── influxd-restore.1.gz
│ ├── influxd-run.1.gz
│ ├── influxd-version.1.gz
│ ├── influx_inspect.1.gz
│ ├── influx_stress.1.gz
│ └── influx_tsm.1.gz
└── var
├── lib
│ └── influxdb
└── log
└── influxdb

进入到InfluxDB的/usr/bin目录后通过以下命令启动它。

1
$ sudo nohup ./influxd  --config ../../etc/influxdb/influxdb.conf &

7 源码编译安装
2.1.12.1.6节的安装相对比较简单,如果拿相机来打个比方的话,之前的安装方式更像“傻瓜相机”,拿来就能用,如果我们有更专业的要求怎么办?那就得用专业的“数码相机”。InfluxDB安装也同样如果没什么特殊的需求,可以根据自己的情况选择2.1.12.1.6节相应的方式安装。如果有一些特殊的定制化需求就需要更改源码再编译安装才可以,以下来介绍源码编译与安装。

在源码编辑安装前首先要安装Golang语言环境,以InfluxDB1.7版本为例需要安装相应的Golang1.11版本。官方网站推荐使用gvm来管理Golang语言的版本,gvm是Golang语言虚拟环境配置工具,它准许一台机器上安装多个Golang语言的版本,便于我们开发与维护相关Golang语言开发的程序,关于gvm更多信息可以参考 https://github.com/moovweb/gvm。

整个编译安装InfluxDB共分为五步,本节在Centos7环境下编译安装通过:

1.安装gvm,方法如下。

1
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

2.安装gvm后再安装Golang语言的环境,并通过gvm设置当前的默认的版本

1
2
$ gvm install go1.11
$ gvm use go1.11 --default # 设置当前Golang语言环境的默认的版本

3.安装dep,它是官方推荐的InfluxDB的代码依赖管理工具,关于dep更多可以参考 https://github.com/golang/dep。

1
$ go get github.com/golang/dep/cmd/dep

4.创建工作的目录并下载InfluxDB的源码,这里分为两种方式介绍,用户可以根据自己的环境或习惯来使用不同的方式下载:

方式1,通过go get下载:

1
2
3
$ mkdir $HOME/gocodez    # 创建项目环境目录
$ export GOPATH=$HOME/gocodez # 设置GOPATH环境
$ go get github.com/influxdata/influxdb # 下载InfluxDB源码

方式2,通过git clone :

1
2
3
$ mkdir -p $GOPATH/src/github.com/influxdata
$ cd $GOPATH/src/github.com/influxdata
$ git clone git@github.com:<username>/influxdb

需要注意的是不管以哪种方式下载的InfluxDB源码,下载后存放的目录结构必须是一致的,即

5.下载InfluxDB源码后,通过dep解决InfluxDB源码间编译依赖的问题。

1
2
$ cd $GOPATH/src/github.com/influxdata/influxdb
$ dep ensure

这里可能需要读者注意由于InfluxDB源码的依赖比较多,本地网络慢、跨国下载或下载包的地址迁移等情况都会导致最终编译缺少依赖包而失败,所以要有预期通过dep安装并没有想象中的那么顺利,但出现问题也不要急着相信dep会解决绝大部分问题,当仍然偶发出现下载包失败的情况可以通过以下几步来解决:

首先,再次通过ensure -update来更新下载包。

1
2
$ cd $GOPATH/src/github.com/influxdata/influxdb
$ dep ensure -update

但由于跨国下载部分失败的包推荐使用gopm来解决,它是一个具备代理功能的go get可以针对指定下载失败的包进行再次下载安装。以下为下载gopm命令关于gopm更多可以参考https://github.com/gpmgo/gopm。

1
$ go get -u github.com/gpmgo/gopm

gopm的使用方式如下,下载hllp包到本机:

1
$ gopm get github.com/retailnext/hllp

最后就是出现包地址迁移的情况,部分包之前存放在Google云后续迁移到了Github.com导致下载时找不到的情况,这里我们可以在Github.com上检索或通过百度来寻找解决方案。

解决了环境后,最后我们编译和安装二进制文件文件,命令如下。

1
2
3
$ cd $GOPATH/src/github.com/influxdata/influxdb
$ go clean ./... # 用来移除当前源码包里面编译生成的文件
$ go install ./... # 编译安装

编译安装后的二进制程序存放在$GOPATH/bin目录下。