首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

SpringCloud微服务框架搭建

一、微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备共同对外提供服务 1.3什么是RPC RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。 比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,不能直接调用,这时候需要通过就可以应用RPC框架的实现来解决 1.3.1restful、soap、rpc (1)RESTful是一种架构设计风格,提供了设计原则和约束条件,而不是架构。而满足这些约束条件和原则的应用程序或设计就是 RESTful架构或服务。 (2)SOAP,简单对象访问协议是一种数据交换协议规范, 是一种轻量的、简单的、基于XML的协议的规范。SOAP协议和HTTP协议一样,都是底层的通信协议,只是请求包的格式不同而已,SOAP包是XML格式的。 SOAP的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防火墙或代理服务器的要求。 soap可以使用任何语言来完成,只要发送正确的soap请求即可,基于soap的服务可以在任何平台无需修改即可正常使用。 (3)RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。 RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式) RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。 1.3.2rpc远程调用框架 几种比较典型的RPC的实现和调用框架。 (1)RMI实现,利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol) 和java的原生序列化。 (2)Hessian,是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。 (3)thrift是一种可伸缩的跨语言服务的软件框架。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。 (4)SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。 1.4什么是SOA 业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力 通过服务的组合和编排来实现上层的业务流程 作用:简化维护,降低整体风险,伸缩灵活 1.5什么是微服务 架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行 SOA到微服务架构的演进过程 作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想) 1.6使用RPC http技术实现会员与订单系统通讯 二、微服务架构 三、SpringCloud SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。 四、服务提供者与消费关系 服务提供者:提供服务被人调用 消费者:调用被人服务 五、服务的注册与发现(Eureka ) 在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。 4.1 服务注册 4.1.1创建eurekaserver 项目 4.1.2引入maven依赖 以上都是概念。 image.png 以上是我的springcloud项目,eureka是注册中心,zuul是注册网关,ribbon和feign都是cloud的rpc远程调用。 zuul主要是用来配置网关 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!--eureka server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- spring boot test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> 4.3配置application.yml server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 4.4启动EurekaServer @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } 1.eureka.client.registerWithEureka=true #是否将自身注册 2.eureka.client.fetchRegistry=false #如果为true,启动时报警. 4.5打开eureka server 界面的 image.png 4.2 服务提供者 创建一个服务提供者 (eureka client),当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。 4.2.1 创建项目eurekaclient 4.2.2 引入maven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> 4.2.3 application.yml配置 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8762 spring: application: name: service-hi 4.2.4 发布服务 通过注解@EnableEurekaClient 表明自己是一个eurekaclient. @SpringBootApplication @EnableEurekaClient @RestController public class ServiceHiApplication { public static void main(String[] args) { SpringApplication.run(ServiceHiApplication.class, args); } @Value("${server.port}") String port; @RequestMapping("/hi") public String home(@RequestParam String name) { return "hi " + name + ",i am from port:" + port; } } 4.2.5演示效果 需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。 启动工程,打开http://localhost:8761 ,即eureka server 的网址: image.png 你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为7862 这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 : hi forezp,i am from port:8762 一、 服务消费者(Feign) 什么是Feign Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。 它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。 Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 简而言之: Feign 采用的是基于接口的注解 Feign 整合了ribbon 准备工作 继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 、8773. 准备工创建一个feign的服务 新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖 spring-cloud-starter-eureka、Web的起步依赖spring-boot-starter-web,代码如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> application.yml配置 在工程的配置文件application.yml文件,指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/ ,代码如下: eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: service-feign 定义一个feign接口 @FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi", method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); } 一个”/hi”的API接口 @RestController public class HiController { @Autowired SchedualServiceHi schedualServiceHi; @RequestMapping(value = "/hi",method = RequestMethod.GET) public String sayHi(@RequestParam String name){ return schedualServiceHi.sayHiFromClientOne(name); } } 启动方式 @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class SericeFeign { public static void main(String[] args) { SpringApplication.run(SericeFeign.class, args); } } 演示效果 启动程序,多次访问http://localhost:8765/hi?name=forezp(http://localhost:8765/hi?name=forezp),浏览器交替显示: hi forezp,i am from port:8762 hi forezp,i am from port:8763 Hystrix断路器 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。 为了解决这个问题,业界提出了断路器模型。 7.1 什么是Hystrix Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合。 在微服务架构中,一个请求需要调用多个服务是非常常见的,如下图: image.png 较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开。 image.png 断路打开后,可用避免连锁故障,fallback方法可以直接返回一个固定值。 准备工作 这篇文章基于上一篇文章的工程,首先启动上一篇文章的工程,启动eureka-server 工程;启动service-hi工程,它的端口为8762。 在ribbon使用断路器 改造serice-ribbon 工程的代码,首先在pox.xml文件中加入spring-cloud-starter-hystrix的起步依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> 改造service 改造HelloService类,在hiService方法上加上@HystrixCommand注解。该注解对该方法创建了熔断器的功能,并指定了fallbackMethod熔断方法,熔断方法直接返回了一个字符串,字符串为”hi,”+name+”,sorry,error!”,代码如下: @Service public class HelloService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "hiError") public String hiService(String name) { return restTemplate.getForObject("http://SERVICE-HI/hi?name=" + name, String.class); } public String hiError(String name) { return "hi," + name + ",sorry,error!"; } } 在启动类上加入 @SpringBootApplication @EnableEurekaClient @EnableHystrix //断路器 public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } } 演示效果 image.png

优秀的个人博客,低调大师

Centos7搭建Confluence

Confluence破解版 应用环境: Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。通过它可以实现团队成员之间的协作和知识共享. 系统及安装软件 centos7.2 java-1.8 mariadb atlassian-confluence-5.10.4.tar.gz 安装JAVA yum -y install java-1.8* 测试java安装:java -version 安装mariadb数据库 启动数据库 systemctl start mariadb systemctl enable mariadb 修改配置文件,支持字符集 [client] port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 [mysqld] character-set-server=utf8 max_allowed_packet = 48M 创建数据库用户 设置root用户密码 grant all privileges on *.* to 'root'@'localhost' identified by 'withub'; grant all privileges on *.* to 'root'@'%' identified by 'withub'; 创建Confluence数据库和用户 create database ConfluenceDB default character set utf8 collate utf8_bin; grant all privileges on ConfluenceDB.* to 'confluence_user'@'localhost' identified by 'withub'; grant all privileges on ConfluenceDB.* to 'confluence_user'@'%' identified by 'withub'; flush privileges; 安装Confluence 首先下载atlassian-confluence-5.10.4.tar.gz安装包,上传至linux服务器上,我这儿上传的/opt目录 2、解压并修改配置文件 tar -zxvf atlassian-confluence-5.10.4.tar.gz cd /opt/atlassian-confluence-5.10.4/confluence/WEB-INF/classes 修改配置文件: vi confluence-init.properties confluence.home=/opt/data/conf/confluence :wq 保存退出! 启动Confluence cd /opt mv atlassian-confluence-5.10.4 atlassian-confluence cd /opt/atlassian-confluence/bin ./startup.sh #启动confluence tailf ../logs/catalina.out #查看启动过程 打开浏览器输入http://IP:8090/ 我们选择生产安装,下一步: 暂时不勾选,下一步: 记住服务ID,然后暂时关闭程序。 关闭Confluence cd /opt/atlassian-confluence/bin ./shutdown.sh或者pkill java #停止confluence 然后cd /opt/atlassian-confluence/confluence/WEB-INF/lib目录下 ls | grep atlassian-extras-decoder-v2-3.2.jar 将atlassian-extras-decoder-v2-3.2.jar放到windows平台上,改名为atlassian-extras-2.4.jar mv atlassian-extras-decoder-v2-3.2.jar atlassian-extras-decoder-v2-3.2.jar.bak 破解Confluence软件 下载破解软件confluence5.6.6-crack,进入windows平台 运行confluence_keygen.jar,有可能运行不了,因为windows平台上需要安装JAVA才能打开 点击.gen!生产key值,复制key保留。 将破解后的atlassian-extras-2.4.jar改为atlassian-extras-decoder-v2-3.2.jar放到linux上/opt/atlassian-confluence/confluence/WEB-INF/lib目录下 将下载的破解文件中的jar目录下的Confluence-5.6.6-language-pack-zh_CN.jar和mysql-connector-java-5.1.39-bin.jar两个文件放入到/opt/atlassian-confluence/confluence/WEB-INF/lib目录下 重新启动Confluence cd /opt/atlassian-confluence/bin ./startup.sh #启动confluence tailf ../logs/catalina.out #查看启动过程 再次浏览器访问http://IP:8090/ 将生成的key复制到框内,下一步 选择Mysql,然后点击External Database 选择Direct JDBC,下一步 点击下一步,自动创建需要的表,可能需要两分钟时间 配置用户 配置用户和密码 下一步 安装完成! 完成安装之后,进入浏览器会看到有黄色警告之类的报错! 问题解决: 报错innodb_log_file_size大小设置问题 解决: 1、Shutdown Confluence 2、Shutdown MySQL 3、Edit the my.cnf: vim /etc/my.cnf(添加配置文件) max_allowed_packet = 512M innodb_log_file_size = 2G 4、Delete the current innodb log files. cd /var/lib/mysql/(yum安装的mysql都在这个目录下) rm -rf ib_logfile* 5、Start MySQL. 6、Start Confluence. 即可! 报错:Checks if your JDK / JRE version and vendor are supported. 解决: atlassian-confluence-5.10.4.tar.gz搭配jdk1.8版本:jdk-8u152-linux-x64.tar.gz 即可!! 欢迎提出问题!!! Just Do It

优秀的个人博客,低调大师

Go语言_eclipse环境搭建

1 下载eclipse 2 下载goeclipse http://code.google.com/p/goclipse/wiki/InstallationInstructions 3 下载GoCode https://github.com/nsf/gocode 下载源码到Gopath路径下 Go build 可以到父目录上生成了gocode.exe 4 下载MinGW http://sourceforge.net/projects/mingw/files/MinGW/ 并按照要求安装 5 设置Go环境 设置go环境变量 Windows->Reference-> Go 设置gocode环境变量 Windows->Reference-> Go->Gocode 设置gocode path为之前生成的exe文件 设置GDB路径 下面就可以进行单点调试和运行了 本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2012/06/19/2555248.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

CentOS搭建自己的SS

服务器:Vultr官网链接 基本步骤: 注册账号 添加信用卡或paypel充值(注意:如果网页自动翻译,可能看不到paypel充值页面,选择重新载入然后拒绝翻译就好) 选择服务器主机,购买。我买的时候最低配置的2.5美元的已经没有了,据说这个就够了,我用的5美元版本 -选择服务器机房地址 -选择套餐(实际上是按照时间计费的) -然后点击右下角的”Deploy Now”就好 服务器系统:Cent 6 x64(尽量不要选择7以上版本哦) 然后开始部署啦! SSH连接服务器 ssh root@ip地址 密码是系统给的密码哦,如果需要,可以重置。会方便许多。 passwd - 开始部署SS,代码如下 yum -y install wget wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh chmod +x shadowsocks-libev.sh ./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log 卸载命令:./shadowsocks-libev.sh uninstall 注意中途要输入密码和端口哦~成功后如下: 记得重启哦~ 重启命令行 reboot 部署加速 yum -y install wget wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh chmod +x bbr.sh ./bbr.sh 成功后如下: 参考:https://github.com/Alvin9999/new-pac/wiki/%E8%87%AA%E5%BB%BAss%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%99%E7%A8%8B

优秀的个人博客,低调大师

hadoop2.7.2 HA搭建

配置文件 1.core配置: [qujian@master hadoop]$ vim core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/qujian/hadoop-2.7.2/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>master.hadoop.cn:2181,second1.hadoop.cn:2181,second2.hadoop.cn:2181</value> </property> <property> <name>ha.zookeeper.session-timeout.ms</name> <value>1000</value> </property> 修改mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> 修改yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master.hadoop.cn:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master.hadoop.cn:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master.hadoop.cn:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master.hadoop.cn:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master.hadoop.cn:8088</value> </property> 修改hdfs-site.xml <property> <name>dfs.namenode.name.dir</name> <value>file:/home/qujian/hadoop-2.7.2/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/qujian/hadoop-2.7.2/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>master.hadoop.cn:9000</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>second1.hadoop.cn:9000</value> </property> <property> <name>dfs.namenode.servicerpc-address.mycluster.nn1</name> <value>master.hadoop.cn:53310</value> </property> <property> <name>dfs.namenode.servicerpc-address.mycluster.nn2</name> <value>second1.hadoop.cn:53310</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>master.hadoop.cn:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>second1.hadoop.cn:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://second2.hadoop.cn:8485;data1.hadoop.cn:8485;data2.hadoop.cn:8485/mycluster</value> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/qujian/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/qujian/hadoop-2.7.2/journal</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <name>ha.failover-controller.cli-check.rpc-timeout.ms</name> <value>60000</value> </property> <property> <name>ipc.client.connect-timeout</name> <value>60000</value> </property> <property> <name>dfs.image.transfer.bandwidthPerSec</name> <value>4194304</value> </property> 配置data服务器: [qujian@master hadoop]$ cat slaves second2.hadoop.cn data1.hadoop.cn data2.hadoop.cn for n in second1.hadoop.cn second2.hadoop.cn data1.hadoop.cn data2.hadoop.cn do scp -rp /home/qujian/hadoop-2.7.2 $n:~/ wait done 本文转自 zhuxtqw 51CTO博客,原文链接:http://blog.51cto.com/1054054/1748114,如需转载请自行联系原作者

优秀的个人博客,低调大师

centos6搭建elk

ELK由Elasticsearch、Logstash和Kibana三部分组件组成; Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用 kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 四大组件 Logstash: logstash server端用来搜集日志; Elasticsearch: 存储各类日志; Kibana: web化接口用作查寻和可视化日志; Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server; 实验环境 centos6.5_x64 实验软件 jdk elasticsearch-1.4.2.tar.gz master.tar.gz logstash-1.4.2.tar.gz kibana-3.1.2.tar.gz 软件安装 yum install -y java-1.7.0-openjdk* java -version java version "1.7.0_111" OpenJDK Runtime Environment (rhel-2.6.7.2.el6_8-x86_64 u111-b01) OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode) tar zxvf elasticsearch-1.4.2.tar.gz mv elasticsearch-1.4.2 /usr/local/ ln -s /usr/local/elasticsearch-1.4.2 /usr/local/elasticsearc tar zxvf master.tar.gz mv elasticsearch-servicewrapper-master/service/ /usr/local/elasticsearch/bin/ /usr/local/elasticsearch/bin/service/elasticsearch start Starting Elasticsearch... Waiting for Elasticsearch...... running: PID:2496 netstat -tuplna | grep 9300 tcp 0 0 :::9300 :::* LISTEN 2498/java tcp 0 0 ::ffff:192.168.31.103:44390 ::ffff:192.168.31.103:9300 ESTABLISHED 2498/java ps -ef | grep 9300 root 2566 2161 0 20:04 pts/0 00:00:00 grep 9300 curl -X GET http://localhost:9200 { "status" : 200, "name" : "Time Bomb", "cluster_name" : "elasticsearch", "version" : { "number" : "1.4.2", "build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c", "build_timestamp" : "2014-12-16T14:11:12Z", "build_snapshot" : false, "lucene_version" : "4.10.2" }, "tagline" : "You Know, for Search" } tar zxvf logstash-1.4.2.tar.gz mv logstash-1.4.2 /usr/local/ ln -s /usr/local/logstash-1.4.2 /usr/local/logstash /usr/local/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }' mkdir -p /usr/local/logstash/etc vim /usr/local/logstash/etc/hello_search.conf 默认没有这个配置文件需要手动编辑 input stdin { type => "human" } } output { stdout { codec => rubydebug } elasticsearch { host => "192.168.31.243" port => 9300 } } /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf & { "message" => "hello word", "@version" => "1", "@timestamp" => "2016-09-24T12:40:42.081Z", "type" => "human", "host" => "0.0.0.0" } tar zxvf kibana-3.1.2.tar.gz mv kibana-3.1.2 /var/www/html/kibana vim /var/www/html/kibana/config.js elasticsearch: "http://"+window.location.hostname+":9200" elasticsearch: "http://192.168.31.243:9200",修改为 vim /usr/local/elasticsearch/config/elasticsearch.yml http.cors.enabled: true 配置文件最后加载一行 /usr/local/elasticsearch/bin/service/elasticsearch restart 重启读取配置文件 service httpd restart vim /usr/local/logstash/etc/logstash_agent.conf input { file { type => "http.access" path => ["/var/log/httpd/access_log"] } file { type => "http.error" path => ["/var/log/httpd/error_log"] } file { type => "messages" path => ["/var/log/messages"] } } output { elasticsearch { host => "192.168.31.243" port => 9300 } nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf & ps -ef | grep 9292 root 10834 2682 0 21:03 pts/1 00:00:00 grep 9292 ps -ef | grep 9300 root 10838 2682 0 21:04 pts/1 00:00:00 grep 9300 ps -ef | grep 9200 root 10840 2682 0 21:04 pts/1 00:00:00 grep 9200 http://服务端ip/kibana 本文转自 mailfile 51CTO博客,原文链接:http://blog.51cto.com/mailfile/1856217,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册