基础环境配置:

yum search java | grep jdk; 检查jdk版本
yum install java-xxxx-openjdk; 下载安装jdk
which java -> /usr/bin/java 查找默认安装的jdk可执行文件路径
ls -lrt /usr/bin/java 命令通过此文件查找jdk安装路径
yum install initscripts -y service命令环境准备
yum install iptables-services 检测并安装iptables,在/etc/sysconfig/iptables中配置防火墙规则,开放端口
-A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT
-A INPUT -m state —state NEW -m tcp -p tcp —dport 80 -j ACCEPT
重启 service iptables restart
重新载入修改的配置 systemctl daemon-reload

1.JDK安装

  1. 上传jdk-7u45-linux-x64.tar.gz到Linux上
  2. 解压jdk至/root/apps目录下 tar -zxvf jdk-7u45-linux-x64.tar.gz -C /root/apps

    3.设置环境变量,在/etc/profile 文件最后追加相关内容 vi /etc/profile
    export JAVA_HOME=/root/apps/jdk1.7.0_80
    export PATH=$PATH:$JAVA_HOME/bin
    4.刷新环境变量 source /etc/profile
    5.测试java命令是否可用 java -version

2.安装Tomcat

1.上传apache-tomcat-7.0.68.tar.gz到Linux上
2.解压tomcat
tar -zxvf apache-tomcat-7.0.68.tar.gz -C /usr/local/
3.启动tomcat
/usr/local/apache-tomcat-7.0.68/bin/startup.sh
4.查看tomcat进程是否启动
jps
5.查看tomcat进程端口
netstat -anpt | grep 2465
6.通过浏览器访问tomcat
http://192.168.0.101:8080

下载rz环境用于文件上传
yum -y install lrzsz
rz -y 上传

  1. 配置ping连接
    Vi /etc/sysconfig/network
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    IPADDR=192.168.159.11
    NETMASK=255.255.255.0
    GATEWAY=192.168.159.2
    DNS1=8.8.8.8
    service network restart 重启网关服务
    vi /etc/hosts
    192.168.159.11 cdh1 ……
    service iptables stop 关闭防火墙
    chkconfig iptables off

    2. Ssh
    yum install openssh-clients* -y
    Ssh-keygen 生成公钥
    Ssh-copy-id Mini1 把公钥发送给另一台主机
    Ssh Mini1 连接

    3.安装mysql

    yum list | grep mysql
    yum install -y mysql-server mysql mysql-devel
    rpm -qi mysql-server 更新mysql-server
    service mysqld start 启动服务
    lsof -i:3306 检查3306端口是否正常
    chkconfig —list | grep mysqld
    chkconfig mysqld on
    mysqladmin -u root password ‘root’
    mysql -u root –p
    systemctl enable mysqld设置mysqld服务开机启动
    创建用户再赋权(Mysql8.0以后)
    mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘你的密码’;
    Query OK, 0 rows affected (0.48 sec)
    mysql> grant all privileges on . to ‘root’@’%’;
    Query OK, 0 rows affected (0.48 sec)
    1,设置访问单个数据库权限
    mysql>grant all privileges on test.* to ‘root’@’%’;
    说明:设置用户名为root,密码为空,可访问数据库test

2,设置访问全部数据库权限
mysql>grant all privileges on . to ‘root’@’%’;
说明:设置用户名为root,密码为空,可访问所有数据库*

3,设置指定用户名访问权限
mysql>grant all privileges on . to ‘liuhui’@’%’;
说明:设置指定用户名为liuhui,密码为空,可访问所有数据库*

4,设置密码访问权限
mysql>grant all privileges on . to ‘liuhui’@’%’ IDENTIFIED BY ‘liuhui’;
说明:设置指定用户名为liuhui,密码为liuhui,可访问所有数据库*

5,设置指定可访问主机权限
mysql>grant all privileges on . to ‘liuhui’@’10.2.1.11’;
说明:设置指定用户名为liuhui,可访问所有数据库*,只有10.2.1.11这台机器有权限访问
配置编码格式
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

4.zookeeper安装

1.解压: tar -zxvf zookeeper-3.4.5.tar.gz -C /root/apps
2.重命名: mv zookeeper-3.4.5 zookeeper
3.修改环境变量 vi /etc/profile 在最后面添加内容
export ZOOKEEPER_HOME=/root/apps/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
4.重新编译文件 source /etc/profile
5.进入 conf中修改配置文件
cd apps/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg 在其中添加内容
dataDir=/root/apps/zookeeper/zkdata
server.1=window:2888:3888 (主机名, 心跳端口、数据端口)
server.2=Mini1:2888:3888
server.3=Mini2:2888:3888
6.创建文件夹 cd apps/zookeeper/ mkdir zkdata
7.在zkdata文件夹下新建myid文件,文件内容与zoo.cfg中server.?一一对应
cd zkdata vi myid 添加内容为:1

修改其他机器的配置文件

到Mini1上:修改myid为:2
到Mini2上:修改myid为:3
8.将集群下发到其他机器上
scp -r /root/apps/zookeeper root@Mini1:/root/apps/
scp -r /root/apps/zookeeper root @Mini2:/root/apps/
9.启动 zkServer.sh start
10查看集群状态 zkServer.sh status

5.Hadoop安装

  • 上传HADOOP安装包
  • 规划安装目录 /home/hadoop/apps/hadoop-2.6.1
  • 解压安装包 tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C /root/apps
  • 修改配置文件 $HADOOP_HOME/etc/hadoop/

vi hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/root/apps/jdk1.7.0_51

vi core-site.xml



fs.defaultFS
hdfs://cdh1:9000


hadoop.tmp.dir
自己创建一个
/root/apps/hddata

vi hdfs-site.xml



dfs.namenode.name.dir
/home/hadoop/data/name


dfs.datanode.data.dir
/home/hadoop/data/data



dfs.replication
3

其他的可不写


dfs.secondary.http.address
hdp-node-01:50090

vi mapred-site.xml



mapreduce.framework.name
yarn

vi yarn-site.xml



yarn.resourcemanager.hostname
cdh1



yarn.nodemanager.aux-services
mapreduce_shuffle

vi slaves

cdh1
Mini1
Mini2

启动集群

初始化HDFS

bin/hadoop namenode -format

启动HDFS(单点启动)

sbin/start-dfs.sh

启动YARN

sbin/start-yarn.sh

启动所有:start-all.sh 关闭所有 stop-all.sh

6.Hive安装

1.将hive文件上传至hadoop集群中并解压
工具安装 - 图1

2.解压至/export/servers/中
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /export/servers/
cd /export/servers/
ln -s apache-hive-1.2.1-bin hive 配置别名 类似指针
工具安装 - 图2

3.配置环境变量,编辑/etc/profile
#set hive env
export HIVE_HOME=/export/servers/hive
export PATH=${HIVE_HOME}/bin:$PATH
#让环境变量生效
source /etc/profilec

4.修改hive的配置文件
进入配置文件的目录
cd /export/servers/hive/conf/
修改hive-env.sh文件
cp hive-env.sh.template hive-env.sh

  1. 将以下内容写入到hive-env.sh文件中
  2. export JAVA_HOME=/export/servers/jdk
  3. export HADOOP_HOME=/export/servers/hadoop
  4. export HIVE_HOME=/export/servers/hive

修改log4j文件
cp hive-log4j.properties.template hive-log4j.properties

  1. 将EventCounter修改成org.apache.hadoop.log.metrics.EventCounter
  2. #log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter
  3. log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

配置远程登录模式
touch hive-site.xml
将以下信息写入到hive-site.xml文件中

  1. <configuration>
  2. <property>
  3. <name>javax.jdo.option.ConnectionURL</name>
  4. <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
  5. </property>
  6. <property>
  7. <name>javax.jdo.option.ConnectionDriverName</name>
  8. <value>com.mysql.jdbc.Driver</value>
  9. </property>
  10. <property>
  11. <name>javax.jdo.option.ConnectionUserName</name>
  12. <value>root</value>
  13. </property>
  14. <property>
  15. <name>javax.jdo.option.ConnectionPassword</name>
  16. <value>980523lxj</value>
  17. </property>
  18. </configuration>

5.安装mysql并配置hive数据库的权限
安装mysql数据库及客户端
yum install mysql-server
yum install mysql
service mysqld start
配置hive元数据库
mysql -u root -p
create database hive;
对hive元数据库进行赋权,开放远程连接,开放localhost连接
grant all PRIVILEGES on . to ‘root’@’%’ identified by ‘980523lxj’ WITH GRANT OPTION
grant all PRIVILEGES on . to ‘root’@’localhost’ identified by ‘980523lxj’ WITH GRANT OPTION
6. 把mysql的连接驱动放到hive/lib下
工具安装 - 图3

  1. schematool -dbType mysql -initSchema
    8.运行hive命令即可启动hive hive

附录1:如果报错Terminal initialization failed; falling back to unsupported
将/export/servers/hive/lib 里面的jline2.12替换了hadoop 中/export/servers/hadoop/hadoop-2.6.1/share/hadoop/yarn/lib/jline-0.09*.jar
附录2:jdbc驱动类出错
工具安装 - 图4
附录3:异常信息
Logging initialized using configuration in jar:file:/export/servers/apache-hive-2.0.0-bin/lib/hive-common-2.0.0.jar!/hive-log4j2.properties
Exception in thread “main” java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)
处理方法:
schematool -dbType mysql -initSchema

7.habse安装

解压

tar -zxvf hbase-0.94.6.tar.gz -C /root/apps

重命名

mv hbase-0.94.6 hbase

修改环境变量(每台机器都要执行)

vi /etc/profile
添加内容:

export HBASE_HOME=/root/apps/hbase
export PATH=$PATH:$HBASE_HOME/bin

source /etc/proflie
su - hadoop

修改配置文件

上传配置文件

分发到其他节点

scp -r /root/apps/hbase hadoop@slave1:/home/hadoop/
scp -r /root/apps/hbase hadoop@slave2:/home/hadoop/
scp -r /root/apps/hbase hadoop@slave3:/home/hadoop/

启动

注意:启动hbase之前,必须保证hadoop集群和zookeeper集群是可用的。
start-hbase.sh

监控

  1. 进入命令行
    • hbase shell
  2. 页面监控

工具安装 - 图5

8.Kafka安装

1、上传并解压
工具安装 - 图6
工具安装 - 图7
2、修改配置文件 /root/apps/kafka_2.11-0.8.2.2/config
修改server.properties 只修改broker.id和zookeeper就行

  1. #broker的全局唯一编号,不能重复
  2. broker.id=01
  3. #用来监听链接的端口,producer或consumer将在此端口建立连接
  4. port=9092
  5. #处理网络请求的线程数量
  6. num.network.threads=3
  7. #用来处理磁盘IO的线程数量
  8. num.io.threads=8
  9. #发送套接字的缓冲区大小
  10. socket.send.buffer.bytes=102400
  11. #接受套接字的缓冲区大小
  12. socket.receive.buffer.bytes=102400
  13. #请求套接字的缓冲区大小
  14. socket.request.max.bytes=104857600
  15. #kafka消息存放的路径
  16. log.dirs=/root/kafka-logs/kafka
  17. #topic在当前broker上的分片个数
  18. num.partitions=2
  19. #用来恢复和清理data下数据的线程数量
  20. num.recovery.threads.per.data.dir=1
  21. #segment文件保留的最长时间,超时将被删除
  22. log.retention.hours=168
  23. #滚动生成新的segment文件的最大时间
  24. log.roll.hours=168
  25. #日志文件中每个segment的大小,默认为1G
  26. log.segment.bytes=1073741824
  27. #周期性检查文件大小的时间
  28. log.retention.check.interval.ms=300000
  29. #日志清理是否打开
  30. log.cleaner.enable=true
  31. #broker需要使用zookeeper保存meta数据
  32. zookeeper.connect=cdh1:2181,Mini1:2181,Mini2:2181
  33. #zookeeper链接超时时间
  34. zookeeper.connection.timeout.ms=6000
  35. #partion buffer中,消息的条数达到阈值,将触发flush到磁盘
  36. log.flush.interval.messages=10000
  37. #消息buffer的时间,达到阈值,将触发flush到磁盘
  38. log.flush.interval.ms=3000
  39. #删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
  40. delete.topic.enable=true
  41. #此处的host.name为本机IP(重要),如果不改,则客户端会抛出:Producerconnection to localhost:9092 unsuccessful 错误!
  42. host.name=cdh1

3、分发到其他节点下
(1) scp -r /root/apps/ root@Mini1:/root/apps
(2) scp -r /root/apps/ root@Mini2:/root/apps
4、更改其他节点先的broker.id
Mini1的
broker.id=02
host.name=Mini1
Mini2的
broker.id=03
Host.name=Mini2
5、启动
5.1先启动zookeeper
5.2再启动kafka

  1. [root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-server-start.sh -daemon config/server.properties &
  2. 创建topic-test (cdh1上)
  3. ./bin/kafka-topics.sh --create --zookeeper cdh1:2181,Mini1:2181,Mini2:2181 --replication-factor 3 --partitions 3 --topic test
  4. 列出已创建的topic列表(cdh11上)
  5. [root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-topics.sh --list --zookeeper cdh1:2181
  6. test
  7. [root@zhiyou01 kafka_2.12-1.1.0]#
  8. 启动控制台生产者 (cdh1上)
  9. ./bin/kafka-console-producer.sh --broker-list cdh1:9092, Mini1:9092, Mini2:9092 --topic test
  10. [root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-console-producer.sh --broker-list cdh1:9092, Mini1:9092, Mini2:9092 --topic test
  11. > 此处可以输入内容
  12. 启动控制台消费者 (其他的节点上面)
  13. [root@zhiyou02 kafka_2.12-1.1.0]# ./bin/kafka-console-consumer.sh --bootstrap-server cdh1:9092 --from-beginning --topic test(新版本使用bootstrap-server)
  14. ./bin/kafka-console-consumer.sh --zookeeper cdh1:2181 --from-beginning --topic test
  15. 删除主题:
  16. ./bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test

彻底删除topic:
1、删除kafka存储目录(server.properties文件log.dirs配置,默认为”/tmp/kafka-logs”)相关topic目录
2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。

9.Scala安装

安装JDK

因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK

安装Scala

Windows安装Scala编译器

访问Scala官网http://www.scala-lang.org/下载Scala编译器安装包,目前最新版本是2.12.x,但是目前大多数的框架都是用2.10.x编写开发的,所以这里推荐2.10.x版本,下载scala-2.10.6.msi后点击下一步就可以了

Linux安装Scala编译器

下载Scala地址http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz然后解压Scala到指定目录
tar -zxvf scala-2.10.6.tgz -C /usr/java
配置环境变量,将scala加入到PATH中
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin

Scala开发工具安装

目前Scala的开发工具主要有两种:Eclipse和IDEA,这两个开发工具都有相应的Scala插件,如果使用Eclipse,直接到Scala官网下载即可http://scala-ide.org/download/sdk.html。

由于IDEA的Scala插件更优秀,大多数Scala程序员都选择IDEA,可以到http://www.jetbrains.com/idea/download/下载社区免费版,点击下一步安装即可,安装时如果有网络可以选择在线安装Scala插件。这里我们使用离线安装Scala插件:

  1. 安装IDEA,点击下一步即可。由于我们离线安装插件,所以点击Skip All and Set Defaul
  2. 下载IEDA的scala插件,地址http://plugins.jetbrains.com/?idea_ce

工具安装 - 图8

  1. 安装Scala插件:Configure -> Plugins -> Install plugin from disk -> 选择Scala插件 -> OK -> 重启IDEA

工具安装 - 图9
工具安装 - 图10

工具安装 - 图11

工具安装 - 图12

Docker安装

  1. 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 添加软件源信息(由于国内使用官网的太慢了,这里使用阿里的资源库来加速)sudo yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 更新 yum 缓存sudo yum makecache
  4. 更新并安装 Docker-CE sudo yum -y install docker-ce docker-ce-cli containerd.io
  5. 查看安装版本docker version
  6. 开启Docker服务sudo service docker start

二进制安装:

  1. curl -fsSL https://get.docker.com -o get-docker.sh
  2. DRY_RUN=1 sh ./get-docker.sh

服务间ssh配置
systemctl status sshd 查看sshd状态
systemctl enable sshd 设置开机启动
/etc/hosts配置映射关系
192.168.119.202 master
192.168.119.203 slave1
192.168.119.204 slave2
ssh-keygen -t rsa 生成私钥公钥
ssh-copy-id -i id_rsa.pub root@另一服务器ip 公钥发送给另一服务器(互相操作)
ssh ip 即可

部署kubernetes-dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
image.png

查看pod容器运行状态

kubectl get pods -n kubernetes-dashboard
image.png

查看pod日志

kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-9774cc786-8vsl7

查看dashboard前端的service

kubectl get svc -n kubernetes-dashboard -o wide
image.png

查看dashboard被k8s分配到了哪一台机器上,IP

kubectl get pods —all-namespaces -o wide
kubectl get pods -n 命名空间 -o wide | grep pod名称
image.png

查看dashboard的集群内部IP和访问端口

kubectl get services —all-namespaces
image.png

查看kubernetes-dashboard名称空间下的secret

kubectl get secret -n kubernetes-dashboard
image.png``

找到对应的带有token的kubernetes-dashboard-token-x8s4t

kubectl describe secret admin-user-token-x8s4t -n kubernetes-dashboard
image.png

默认的token只有default名称空间内容权限,我们需要建立管理员权限token

  1. vi dashboard-adminuser.yaml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: admin-user
  6. namespace: kubernetes-dashboard
  7. ---
  8. apiVersion: rbac.authorization.k8s.io/v1beta1
  9. kind: ClusterRoleBinding
  10. metadata:
  11. name: admin-user
  12. roleRef:
  13. apiGroup: rbac.authorization.k8s.io
  14. kind: ClusterRole
  15. name: cluster-admin
  16. subjects:
  17. - kind: ServiceAccount
  18. name: admin-user
  19. namespace: kubernetes-dashboard
  20. 应用dashboard-adminuser.yaml:
  21. kubectl create -f dashboard-adminuser.yaml
  22. 查看admin-user用户的token(显示所有,如下)
  23. kubectl get secret -n kubernetes-dashboard
  24. 获取token
  25. kubectl describe secret admin-user-token-8xf9f -n kubernetes-dashboard
  26. 往后需要再次登陆dashboard页面且让你输密码的时候,你只需要输入以下命令即可重新提取密码
  27. kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

image.png

显示所有节点
kubectl get nodes;
image.png
修改节点角色(增加,删除):
kubectl label node slave2 node-role.kubernetes.io/worker2=salve2 salve2节点增加 worker2角色
kubectl label node slave2 node-role.kubernetes.io/worker2- salve2节点删除 worker2角色

节点服务器(slave1/slave2)重启后,重启docker服务,重新运行各pod

kuberbetes启动 pod遇到 CrashLoopBackOff问题的解决思路:

  1. 查找问题

kubectl describe pod 名字 -n kube-system

  1. 查看日志

kubectl logs pod名字 -n 类别
image.png

  1. 根据日志failed错误提示解决问题。

    常用命令

    https://www.cnblogs.com/zhanglianghhh/p/13467038.html
    1、查看各节点状态:kubectl get node
    2、查看node事件:kubectl describe node
    3、查看Pod状态:kubectl get pod -o wide
    4、查看Pod事件:kubectl describe pod
    5、查看Pod日志文件:kubectl logs -f
    6、进入pod内部:kubectl exec -it /bin/bash
    7、查看系统Kubelet 日志: journalctl -l -u kubelet -n 1000
    8、查询副本编辑器:kubectl get rc
    9、修改rc环境变量: kubectl edit pod | grep

安装docker-compose

//下载docker-compose工具所需的依赖(部署docker环境时,就可以安装了)
yum -y install yum-utils device-mapper-persistent-data lvm2
//下载docker-compose工具
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
//查看docker-compose工具版本信息,确保已经安装成功
docker-compose -v
10-kubeadm.conf配置文件地址:
/usr/lib/systemd/system/kubelet.service.d

Harbor仓库搭建

下载地址:https://github.com/goharbor/harbor/releases
解压:tar zxf harbor-offline-installer-v1.7.0.tgz -C /root/harbor
解压harbor安装包后,修改harbor.yml配置文件
hostname: 192.168.119.202 (自己本机地址)
port: 1180 (自己定义端口号,记得不要使用80端口)
harbor_admin_password: Harboor12345 (admin进入密码)
image.png

harbor启动必须再harbor目录下(存在docker-compose.yml)

image.pngimage.png
image.png

docker镜像上传harbor仓库

  1. 指定用户名、密码及harbor服务器地址登录 harbor

    docker login -u admin -p Harbor12345 192.168.119.202:1001

  2. 更改镜像名称,demo-test是刚才创建的仓库名称,4604f55c1d85 为镜像id

docker tag 4604f55c1d85 192.168.119.202:1001/demo-test/demo-test:v1

  1. 推送镜像到harbor仓库

docker push 192.168.119.202:1001/demo-test/demo-test:v1
image.png

Istio安装部署

下载Istio安装包:https://github.com/istio/istio/releases/tag/1.9.1

安装:
istioctl install —set profile=demo -y
给命名空间添加标签,指示 Istio 在部署应用的时候,自动的注入 Envoy 边车代理:
kubectl label namespace default istio-injection=enabled
验证标签是否添加成功
kubectl describe ns default |grep istio-injection
image.png
部署istio示例应用 bookinfo(samples 为istio安装目录中携带的)
image.png
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml