Nginx的功能与特性
Nginx在过去的10年里,作为Web服务器行业里的新生代迅速崛起。Nginx由俄罗斯工程师Igor Sysoev编写,2004年10月4日发布了第一个公众版本:101。Apache一直占据Web服务器行业的第一,但自2008年开始,它的市场份额在潜移默化的转移到Nginx身上。直至今日,据Netcraft的统计显示,全世界排名前100万的网站中有超过27%的网站在使用Nginx作为Web服务器。Nginx迅速在一向稳定的Web服务器行业崛起并站稳跟脚
1 、静态HTTP服务器
Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、)通过HTTP协议展现给客户端。
2、反向代理服务器
客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。
3、负载均衡
当网站访问量非常大,将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡,并能使用3种自带策略及2种第三方策略。
(1)RR(默认,每个请求按时间顺序逐一分配到不同的后端服务器)
(2)权重(指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)
(3)ip-hash(以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理(若存在登录session时则需要重复登录)。ip-hash根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理)
(4)fair(第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配)
(5)url_hash(第三方 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法)
4、虚拟主机
有的网站访问量大,需要负载均衡。有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将wwwacom和wwwbcom两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。
1、IO多路复用epoll
2、轻量级
3、CPU亲和(affinity)
4、sendfile
SSL证书可以安装多台独立服务器,不限制服务器安装次数。但一台服务器只能安装1个SSL证书,多个域名需要在一台服务器实现,需要使用多域名证书或通配符类型证书。
单域名版、多域名版和通配符版SSL证书之间的区别相关了解:网页链接
这种部署方式都需要一个前端代理服务器,前端代理有很多是用squid或者nginx做的,超有钱的会用netscaler。
像你这种情况,只有两台服务器,就没必要考虑单点故障了,sql server部署到一台服务器上,另一台服务器上部署web 程序就可以了。
两台服务器手动部署大数据平台
##### 初始服务器数量
- 2台centos7
##### 建议配置
- 32G(RAM)
- 24cpu
- 10t(SATA)
### 1环境
- 系统centos7
- jdk:180_171(64位)
- zookeeper:348
- spark-210-bin-hadoop26
- kafka_210-01021
- hadoop-270
- hbase-126
- elasticsearch-630
### 2系统准备
对应的安装包文件:
elasticsearch-630targz
hadoop-270targz
hbase-126-bintargz
jdk-8u171-linux-x64targz
kafka_210-01021tgz
mysql-5723-1el7x86_64rpm-bundletar
spark210hadoop26tgzgz
zookeeper-348targz
一、 配置好hosts
```
两台设备的host
ip1 hello1
ip2 hello2
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
二、机器之间做好免密
1 在hello1服务器中,cd /root/
2 ssh-keygen -trsa (全部按回车,走默认配置)
3 cat ~/ssh/id_rsapub >> ~/ssh/authorized_keys
4 chmod 600 ~/ssh/authorized_keys
5 scp ~/ssh/authorized_keys root@hello2:~/ssh/
到此处时可以实现hello1机器上通过root账户登录到hello2中,但从hello2中无法通过免密码登录到hello1服务器。
6 在hello2服务器中,cd /root/
7 ssh-keygen -trsa (全部按回车,走默认配置)
8 cat ~/ssh/id_rsapub >> ~/ssh/authorized_keys
9 scp ~/ssh/authorized_keys root@hello1:~/ssh/
到此处时可以实现hello1机器与hello2机器之间免密码互通
三、建立一个用户操作elasticsearch用户,后期所有安装软件放在该目录下(当前使用root账户安装)
1添加用户:
useradd -m -s /bin/bash es
2为该用户设置密码:
password es
四、安装JDK
如果系统自带openjdk,先将其卸载掉!
1创建jdk安装路径(hello1、hello2都执行)
执行: mkdir /usr/java
2解压缩jdk到安装目录
执行: tar -zxvf jdk-8u171-linux-x64targz -C /usr/java/
3添加环境变量
vi /etc/profile,添加以下语句
export JAVA_HOME=/usr/java/jdk180_171
export CLASSPATH=:$JAVA_HOME/lib/dtjar:$JAVA_HOME/lib/toolsjar
export PATH=$PATH:$JAVA_HOME/bin
执行:source /etc/profile
4复制安装包和数据目录到hello2
scp -r /usr/java/jdk180_171 hello2:/usr/java/
scp /etc/profile hello2:/etc/
登录到hello2上,进入/home/es目录
执行: source /etc/profile
5、验证:
两台服务器上分别执行: java -version,查看输出的版本是否与安装的版本一致。
五、安装mysql
1如果centos系统中自带mariadb,先卸载mariadb。
2解压mysql安装包程序
执行:tar -xvf mysql-5723-1el7x86_64rpm-bundletar
3依次安装里面rpm包组建
rpm -ivh mysql-community-common-5723-1el7x86_64rpm
rpm -ivh mysql-community-libs-5723-1el7x86_64rpm
rpm -ivh mysql-community-client-5723-1el7x86_64rpm
rpm -ivh mysql-community-server-5723-1el7x86_64rpm
rpm -ivh mysql-community-devel-5723-1el7x86_64rpm
4启动MySQL
执行: systemctl start mysqld
5登录mysql服务器
这种方式安装好后,会再mycnf文件中自动生成一个密码,
执行:cat /var/log/mysqldlog | grep password, 出现如下记录:
2017-09-15T01:58:11863301Z 1 [Note] A temporary password is generated for root@localhost: m-NdrSG4ipuO
其中“m-NdrSG4ipuO”为mysql root账户的初始密码。
登录:
执行: mysql -uroot -p
输入密码: m-NdrSG4ipuO,即可进入mysql服务器。
后续可自行修改root密码,创建新账户等操作。
六、安装zookeeper
1解压zookeeper安装包到指定目录(/home/es)
tar -zxvf zookeeper-348targz -C /home/es
2创建程序软连接
cd /home/es/
ln -s zookeeper-348 zookeeper
3添加执行路径环境
vi /etc/profile
添加
export ZOOKEEPER_HOME=/home/es/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
执行
source /etc/profile
4修改配置文件
cd /home/es/zookeeper
cp conf/zoo_samplecfg conf/zoocfg
在/home/data下创建对应的zookeeper数据存储目录
mkdir /home/data/zookeeper
mkdir /home/data/zookeeper/data
mkdir /home/data/zookeeper/log
修改配置文件:conf/zoocfg,添加以下语句
dataDir=/home/data/zookeeper/data
dataLogDir=/home/data/zookeeper/log
server1=hello1:2888:3888
server2=hello2:2888:3888
5创建server表示符文件
touch /home/data/zookeeper/data/myid
echo echo 1>/home/data/zookeeper/data/myid
6复制安装包和数据目录到hello2
scp -r /home/es/zookeeper-348 es@hello2:/home/es
scp -r /home/data/zookeeper es@hello2:/home/data
scp /etc/profile es@hello2:/etc
登录到hello2上
cd /home/es
ln -s zookeeper-348 zookeeper
echo echo 2>/home/data/zookeeper/data/myid
执行
source /etc/profile
7两台机器上分别执行
zkServersh start
8验证
jps | grep QuorumPeerMain,查看是否有该进程
zkServersh status,查看服务状态
六、安装kafka
1解压kafka安装包到指定目录(/home/es)
tar -zxvf kafka_210-01021tgz -C /home/es
2创建程序软连接
cd /home/es/
ln -s kafka_210-01021 kafka
3修改配置文件
备份:
cp config/serverproperties config/serverpropertiesbak
创建kafka日志目录:
mkdir /home/data/kafka
mkdir /home/data/kafka/kafka-logs
修改:config/serverproperties,具体对应字段如下:
brokerid=0
deletetopicenable=true
numnetworkthreads=10
numiothreads=32
socketsendbufferbytes=102400
socketreceivebufferbytes=102400
socketrequestmaxbytes=104857600
logdirs=/home/data/kafka/kafka-logs
numpartitions=1
numrecoverythreadsperdatadir=1
logretentionhours=168
logsegmentbytes=1073741824
logretentioncheckintervalms=300000
zookeeperconnect=hello1:2181,hello2:2181
zookeeperconnectiontimeoutms=6000
6复制安装包和数据目录到hello2
scp -r /home/es/kafka_210-01021 es@hello2:/home/es
scp -r /home/data/kafka es@hello2:/home/data
修改hello2中的配置
登录到hello2上,cd /home/es/kafka,修改config/serverproperties中brokerid值为2
7启动kafka
在两台机器的/home/es/kafka中,创建一个日志存放目录:mkdir start_log,执行以下命令:
nohup bin/kafka-server-startsh config/serverproperties > start_log/kafka_start_log 2>&1 &
8验证运行情况
jps | grep Kafka,查看进程
通过kafka命令查看topic。
七、安装hadoop
1解压hadoop安装包到指定目录(/home/es)
tar -zxvf hadoop-270targz -C /home/es
2创建程序软连接
cd /home/es/
ln -s hadoop-270 hadoop
3创建数据存放目录
mkdir /home/data/hadoop
mkdir /home/data/hadoop/tmp
mkdir /home/data/hadoop/dfs
mkdir /home/data/hadoop/dfs/data
mkdir /home/data/hadoop/dfs/name
4修改配置文件
修改/home/es/hadoop/etc/hadoop/core-sitexml
<configuration>
<property>
<name>fsdefaultFS</name>
<value>hdfs://hello1:9000</value>
</property>
<property>
<name>hadooptmpdir</name>
<value>file:/home/data/hadoop/tmp</value>
</property>
<property>
<name>iofilebuffersize</name>
<value>131702</value>
</property>
</configuration>
修改/home/es/hadoop/etc/hadoop/hdfs-sitexml
<configuration>
<property>
<name>dfsnamenodenamedir</name>
<value>file:/home/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfsdatanodedatadir</name>
<value>file:/home/data/hadoop/dfs/data</value>
</property>
<property>
<name>dfsreplication</name>
<value>2</value>
</property>
<property>
<name>dfsnamenodesecondaryhttp-address</name>
<value>hello1:9001</value>
</property>
<property>
<name>dfswebhdfsenabled</name>
<value>true</value>
</property>
</configuration>
修改/home/es/hadoop/etc/hadoop/mapred-sitexml
<configuration>
<property>
<name>mapreduceframeworkname</name>
<value>yarn</value>
</property>
<property>
<name>mapreducejobhistoryaddress</name>
<value>hello1:10020</value>
</property>
<property>
<name>mapreducejobhistorywebappaddress</name>
<value>hello1:19888</value>
</property>
</configuration>
修改/home/es/hadoop/etc/hadoop/yarn-sitexml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarnnodemanageraux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarnnodemanagerauxservicesmapreduceshuffleclass</name>
<value>orgapachehadoopmapredShuffleHandler</value>
</property>
<property>
<name>yarnresourcemanageraddress</name>
<value>hello1:8032</value>
</property>
<property>
<name>yarnresourcemanagerscheduleraddress</name>
<value>hello1:8030</value>
</property>
<property>
<name>yarnresourcemanagerresource-trackeraddress</name>
<value>hello1:8031</value>
</property>
<property>
<name>yarnresourcemanageradminaddress</name>
<value>hello1:8033</value>
</property>
<property>
<name>yarnresourcemanagerwebappaddress</name>
<value>hello1:8088</value>
</property>
<property>
<name>yarnnodemanagerresourcememory-mb</name>
<value>768</value>
</property>
</configuration>
配置/home/es/hadoop/etc/hadoop目录下hadoop-envsh、yarn-envsh的JAVA_HOME(不设置的话,启动不了)
export JAVA_HOME=/usr/java/jdk180_171
配置/home/es/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个从节点,
hello1
hello2
5、将配置好的Hadoop复制到各个节点对应位置上,通过scp传送
scp -r /home/es/hadoop-270 hello2:/home/es/
scp -r /home/data/hadoop hello2:/home/data/
登录到hello2上,进入/home/es目录
执行: ln -s hadoop-270 hadoop
6、格式化nameNode及启动hadoop
在主服务器启动hadoop,从节点会自动启动,进入/home/es/hadoop目录
初始化,输入命令,bin/hdfs namenode -format
全部启动sbin/start-allsh,也可以分开sbin/start-dfssh、sbin/start-yarnsh
输入命令,jps,可以看到相关信息
7、验证hadoop运行情况
浏览器打开http://hello1:8088/
浏览器打开http://hello1:50070/
8、添加hadoop环境变量到/etc/profile
export HADOOP_HOME=/home/es/hadoop export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djavalibrarypath=$HADOOP_HOME/lib/native"
执行: source /etc/profile
八、安装Hbase
1解压hbase安装包到指定目录(/home/es)
tar -zxvf hbase-126-bintargz -C /home/es
2创建程序软连接
cd /home/es/
ln -s hbase-126 hbase
3添加hbase环境变量到/etc/profile
export HBASE_HOME=/home/es/hbase
export PATH=$HBASE_HOME/bin:$PATH
执行:source /etc/profile
4修改HBASE配置文件
vi /home/es/hbase/conf/hbase-envsh
增加: export JAVA_HOME=/usr/java/jdk180_171
修改: export HBASE_MANAGES_ZK=false
vi /home/es/hbase/conf/hbase-sitexml
修改类容:
<configuration>
<property>
<name>hbaserootdir</name> <!-- hbase存放数据目录 -->
<value>hdfs://hello1:9000/hbase/hbase_db</value>
<!-- 端口要和Hadoop的fsdefaultFS端口一致-->
</property>
<property>
<name>hbaseclusterdistributed</name> <!-- 是否分布式部署 -->
<value>true</value>
</property>
<property>
<name>hbasezookeeperquorum</name> <!-- list of zookooper -->
<value>hello1,hello2</value>
</property>
<property><!--zookooper配置、日志等的存储位置 -->
<name>hbasezookeeperpropertydataDir</name>
<value>/home/es/hbase/zookeeper</value>
</property>
</configuration>
配置regionservers,vi /home/es/hbase/conf/regionservers
去掉默认的localhost,加入hello1、hello2
5、将配置好的hbase复制到各个节点对应位置上,通过scp传送
scp -r /home/es/hbase-126 hello2:/home/es/
scp /etc/profile hello2:/etc/
登录到hello2上,进入/home/es目录
执行: ln -s hbase-126 hbase
source /etc/profile
6、hbase的启动
hello1中执行: start-hbasesh
7、验证hbase运行情况
输入jps命令查看进程是否启动成功,若 hello1上出现HMaster、HRegionServer、HQuormPeer,hello2上出现HRegionServer、HQuorumPeer,就是启动成功了。
输入hbase shell 命令 进入hbase命令模式,输入status命令,查看运行状态。
在浏览器中输入http://hello1:16010就可以在界面上看到hbase的配置
注意事项:
正常安装后,创建普通不带压缩表可以正常读写,当使用snappy进行压缩创建表时,该表无法再regionServer中启动!
解决方法:
1在hbase-sitexml文件中添加一下属性
<property>
<name>hbaseregionservercodecs</name>
<value>snappy</value>
</property>
2每台机器中将hadoop_nativezip解压缩到hbase安装目录的lib下,执行 unzip hadoop_nativezip $HBASE_HOME/lib/
3在$HBASE_HOME/conf/hbase-envsh 中添加:export HBASE_LIBRARY_PATH=/home/es/hbase/lib/native
4重启Hbase服务即可
九、Spark安装
1解压hbase安装包到指定目录(/home/es)
tar -zxvf spark210hadoop26tgzgz -C /home/es
2创建程序软连接
cd /home/es/
ln -s spark210hadoop26 spark
3修改配置文件
mv /home/es/spark/conf/spark-envshtemplate /home/es/spark/conf/spark-envsh
vi /home/es/spark/conf/spark-envsh
修改对应配置:
export JAVA_HOME=/usr/java/jdk180_171
export SPARK_MASTER_IP=hello1
export SPARK_MASTER_PORT=7077
export SPARK_LOCAL_IP=hello1
修改slaves文件
mv /home/es/spark/conf/slavestemplate /home/es/spark/conf/slaves
vi /home/es/spark/conf/slaves
将localhost修改成:
hello1
hello2
5、将配置好的hbase复制到各个节点对应位置上,通过scp传送
scp -r /home/es/spark210hadoop26 hello2:/home/es/
登录到hello2上,进入/home/es目录
执行: ln -s spark210hadoop26 spark
在hello2中修改/home/es/spark/conf/spark-envsh
export JAVA_HOME=/usr/java/jdk180_171
export SPARK_MASTER_IP=hello1
export SPARK_MASTER_PORT=7077
export SPARK_LOCAL_IP=hello2
6、启动spark
cd /home/es/spark
执行: sbin/start-allsh
7、检测执行结果
jps | grep Worker,看是否有相应的进程。
十、安装elasticsearch
由于elasticsearch,用root账户无法启动,故该组件用es账户安装
1、切换到es账户: su es
2、解压hbase安装包到指定目录(/home/es)
tar -zxvf elasticsearch-630targz -C /home/es/
创建程序软连接
cd /home/es/
ln -s elasticsearch-630 elasticsearch
3、修改配置文件
vi /home/es/elasticsearch/config/elasticsearchyml
# 集群的名字
clustername: crrc-health
# 节点名字
nodename: node-1
# 数据存储目录(多个路径用逗号分隔)
pathdata: /home/data1/elasticsearch/data
# 日志目录
pathlogs: /home/data1/elasticsearch/logs
#本机的ip地址
networkhost: hello1
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discoveryzenpingunicasthosts: ["hello1", "hello2"]
# 设置节点间交互的tcp端口(集群),(默认9300)
transporttcpport: 9300
# 监听端口(默认)
httpport: 9200
# 增加参数,使head插件可以访问es
httpcorsenabled: true
httpcorsallow-origin: ""
4、创建elasticsearch数据和存储目录
mkdir /home/data1/elasticsearch
mkdir /home/data1/elasticsearch/data
mkdir /home/data1/elasticsearch/logs
5、修改linux系统的默认硬限制参数
切换至root用户: su root
vim /etc/security/limitsconf
添加:
es soft nofile 65536
es hard nofile 65536
退出es登录,重新用es账户登录,使用命令:ulimit -Hn查看硬限制参数。
vi /etc/sysctlconf
添加:
vmmax_map_count=655360
执行:
sysctl -p
6、将配置好的elasticsearch复制到各个节点对应位置上,通过scp传送
scp -r /home/es/elasticsearch-630 hello2:/home/es/
scp -r /home/data1/elasticsearch hello2:/home/data1/
登录到hello2上,进入/home/es目录
执行: ln -s elasticsearch-630 elasticsearch-630
在hello2中修改/home/es/elasticsearch/config/elasticsearchyml
修改: networkhost: hello2
7、启动elasticsearch
使用es账户
执行:
/home/es/elasticsearch/bin/elasticsearch -d
8、验证
控制台中输入:curl http://hello1:9200
0条评论