ElasticSearch部署
Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch 在Apache Lucene 的基础上开发而成,由Elasticsearch N.V. (即现在的Elastic)于2010 年首次发布。
官方文档https://www.elastic.co/guide/en/elastic-stack/index.html
搭建环境: CentOS7.9(vm) ; ElasticSearch5.6.7 ; Java1.8.0_321
值得说一下, 不同的方式安装会遇到不同的问题, 这里我们采用两种方式 : rpm 和 tar两种方式安装
一 、rpm 包部署方式
Java环境 安装
下载jdk
选择合适的版本下载(需要登陆Oracle) : https://www.oracle.com/java/technologies/downloads/
这里我们选择 rpm 包win下上传至 centos7
scp jdk-8u321-linux-x64.rpm root@192.168.8.132:/root
- 安装
rpm -ivh jdk-8u321-linux-x64.rpm
4) 配置Java环境
刚安装完成后会有个临时java环境, 将其永久生效
编辑文件 vim /etc/profile
文件末尾添加如下:export JAVA_HOME=/usr/bin/
export PATH=$JAVA_HOME/:$PATH
其实并不需要$CLASSPTAH
, 我们后面在说
5) 验证Java环境java -version
OR javac
看到有输出就OK了
ElasticSearch 安装
较新版本的ElasticSearch 会自带Java环境. 注意下载合适的版本
下载ElasticSearch
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-5-6-7上传到centos7
scp elasticsearch-5.6.7.rpm root@192.168.132:/root
3) 安装 ElasticSearch rpm -ivh elasticsearch-5.6.7.rpm
4) 使用 systemd 管理 elasticsearchsystemctl daemon-reload
systemctl enable elasticsearch-service
5) 运行 elasticsearchsystemctl start elasticsearch
6) 测试运行curl localhost:9200
看到如下输入表示成功运行
P.S
- 这里使用
systemctl start elasticsearch
并不是使用root用户去运行的.
使用htop
看一下可以看到实际运行的用户就是 elasticsearch
- 可能遇到 no java in(/usr/local…)等问题
如果使用的是tar安装的配置的java环境, 那么 elasticsearch的运行用户是没有java环境的.
建议 Java 和 elasticsearch 保持相同安装方式. 都使用 rpm 包或者 tar包.
二、tar 包部署方式
Java 和 elasticsearch 下载
Java 下载
elasticsearch 下载解压
tar -zxvf /*tar
- 为 elasticsearch 创建用户
groupadd es
useradd es -g es
passwd es
上述操作在 root 用户下完成
(如果不创建密码的话, 该用户没有bash权限的, 影响下面调用java环境)
- 配置java环境
编辑文件vim /etc/profile
文件末尾追加:
export JAVA_HOME=/jdk解压目录/jdk1.8.0_321/bin
export PATH=$JAVA_HOME/:$PATH
- 上述操作是为root用户添加了Java环境
为es 用户添加环境
编辑文件 vim /home/es/.bash_profile
文件末尾追加:export JAVA_HOME=/jdk解压目录/jdk1.8.0_321/bin
export PATH=$JAVA_HOME/:$PATH
- 使用 es 用户 启动 elasticsearch
su es
./elasticsearch安装目录/bin/elasticsearch
相关文档:
elasticsearch5.6.7 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rpm.html
systemd https://yo.zgserver.com/systemd-19.html
####### 有问题可留言…
常见报错以及相关解决办法
1. 安装完readonlyrest重启elasticsearch报错
- elasticsearch.yml里关掉xpack
xpace.security.enabled: false
2. elasticsearch-plugin安装插件或者操作提示could not find java in JAVA_HOME at xxxxxx
- 即使是root权限, 安装插件的时候也加上sudo
iptables基本操作
引言
从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。
在RHEL7里,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables。
firewalld是iptables的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面。
firewalld 与 iptables的比较:
- firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
- firewalld使用区域和服务而不是链式规则;
firewalld默认是拒绝的
,需要设置以后才能放行。而iptables默认是允许的
,需要拒绝的才去限制;- firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说,firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样!
firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令。
一、 安装
1.1 关闭 firewalld
systemctr disable firewalld
systemctl stop firewalld
1.2 安装 iptalbes
yum install iptables iptables-services
1.3 启用 iptables
systemctl enable iptables
systemctl start iptables
1.4 备份 iptables
cp /etc/sysconfig/iptables /etc/sysconfig/iptables-backup
二、 相关实例
2.1 查看当前规则
iptables -L -n -v --line-number
2.2 和详细内容(包含流量统计)
iptables -nvL --line-number
2.3 放行某个端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
2.4 允许某网段访问特定端口
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
2.5 删除某条规则
iptables -D INPUT 1
iptables -D FORWARD 1
2.6 指定某段ip地址
iptables -I INPUT -p tcp --dport 80 -j DROP
iptables - I INPUT -m iprange --src-range 192.168.1.200-192.168.1-210 -p tcp --dport 80 -j ACCEPT
2.7 修改某条规则
iptables -R INPUT 5 -p tcp --dport 36878 -j ACCEPT
2.8 设置默认策略
iptables -P INPUT DROP
iptables -P NAT REJECT
iptables -P OUTPUT ACCEPT
保存更改
iptables-save
iptables-save > /etc/sysconfig/iptables
iptables-save > /etc/iptables/rule.v4
暂时更新到这….
2022/2/17
三、 nat转发
3.1 端口转发
192.168.1.7:7410 —> 192.168.1.160:9200iptables -t nat -A PREROUTING -d 192.168.1.7/32 -p tcp --dport 7410 -j DNAT --to-destination 192.168.1.160:9200
iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp --dport 9200 -j SNAT --to-source 192.168.1.7
3.2 删除nat中的规则
iptables -t nat -D POSTROUTING 6
iptables -t nat -D PREROUTING 1
四、 iptables自定义链
4.1 创建一条自定义链
iptables -t filter -N es_white_list
4.2 自定义链的规则
iptables -I es_white_list -j DROP |
4.3 将自定义链的规则应用到某个端口
iptables -I INPUT -p tcp --dport 9200 -j es_white_list |
4.1 + 4.2 + 4.3 –> 创建白名单es_white_list
只有白名单里的ip地址可以访问该主机的9200和9200端口.
五、 iptables删除自定义链
5.1 清空链white_list里的规则
iptables -t filter -F white_list
5.2 删除链white_list
iptables -t filter -X white_list
报错: iptables: Too many links.
原因: 该链仍在被使用, 删除使用该链的规则
删除引用DOCKER-USER的规则iptables -t filter -D FORWARD 1
六、 重置所有规则
使用这些命令刷新和重置 iptables 到默认状态:
iptables -F |
七、 初始状态
适用于CentOS 7# sample configuration for iptables service |
Ubuntu/Debian中的iptables
在Debian/Ubuntu中使用iptables添加了规则, 即使使用iptables-save保存了规则也会在系统重启后失效.
或者使用iptables-save保存到文件, 然后系统重启后执行iptables-restore恢复规则.
iptables-persistent
应运而生, 更好的iptables持久化方案.
安装之后其配置文件如下: /etc/iptables/rules.v4
/etc/iptables/rules.v6
区别于CentOS中的 /etc/sysconfig/iptables
Debian/Ubuntu下清空/etc/iptables/rules.v4
文件内容, 不会影响已有规则, 甚至systemctl stop iptables
也不会影响
CentOS下清空 /etc/sysconfig/iptables
或者systemctl stop iptables
相当于关闭防火墙
Installation of Docker
0、Env
Environment :
- CentOS Linux release 7.9.2009 (Core)
- Client: Docker Engine - Community Version: 20.10.5
- Server: Docker Engine - Community Version: 20.10.5
Installation (text-based installer)
1、Download docker-ce.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
2、Change sources to TUNA
sed -i 's+https://download.docker.com+https://mirror.nju.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
3、Installating
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4、Start service
systemctl start docker
5、Verify
docker --version
6、e.g
docker run hello-world
If you’ve seen such this whitch means the docker have succeed run on you system.
7、Some improvements
change source vim /etc/docker/daemon.json
touch it if there was not such file
{ |
keepalived配置nginx高可用
名词解释:
高可用: High Availability (HA)
负载均衡: Load Balance (LB)
服务器负载均衡: Server Load Balancing (SLB)
区别: 高可用性:顾名思义,尽可能采取措施减少系统服务中断时间,进而提高业务程序持续对外提供服务的能力。 负载均衡:将高并发的请求数据分发到不同的集群结点,尽量平衡系统所有资源的压力,从而提升整个集群对于请求的处理能力
环境说明:
主机A 192.168.128.8 nginx + keepalived
主机B 192.168.128.9 nginx + keepalived
通过keepalived配置nginx高可用, keepalived配置nginx对外虚拟地址为 192.168.128.10
软件安装
主机A: yum install keepalived nginx
主机B: yum install keepalived nginx
主机A配置
- keepalived 配置
/etc/keepalived/keepalived.conf
vrrp_script chk_nginx { |
- nginx 脚本配置
vim /etc/keepalived/nginx_check.sh
chmod +x /etc/keepalived/nginx_check.sh
#!/bin/bash |
主机B配置
- keepalived 配置
和主机A的配置除了本机ip
,优先级
不同, 其他均相同配置
/etc/keepalived/keepalived.conf
vrrp_script chk_nginx { |
- nginx 脚本配置
和主机A的配置一样哦
vim /etc/keepalived/nginx_check.sh
chmod +x /etc/keepalived/nginx_check.sh
#!/bin/bash |
配置启动
主机A和主机B配置 keppalived 和 nginx 自启 systemctl enable nginx
systemctl enable keepalived
systemctl start nginx
systemctl start nginx
这个时候A和B的nginx就是一个主从关系. 只要其中一个nginx正常就可以通过keepalived虚拟的192.168.128.10 正常访问到nginx