...
1
18
19
20
21
22 package main
23
24 import (
25 "flag"
26 "strings"
27
28 "google.golang.org/grpc"
29 "google.golang.org/grpc/credentials"
30 "google.golang.org/grpc/credentials/alts"
31 "google.golang.org/grpc/grpclog"
32 "google.golang.org/grpc/internal/testutils/fakegrpclb"
33 "google.golang.org/grpc/testdata"
34 )
35
36 var (
37 port = flag.Int("port", 10000, "Port to listen on.")
38 backendAddrs = flag.String("backend_addrs", "", "Comma separated list of backend IP/port addresses.")
39 useALTS = flag.Bool("use_alts", false, "Listen on ALTS credentials.")
40 useTLS = flag.Bool("use_tls", false, "Listen on TLS credentials, using a test certificate.")
41 shortStream = flag.Bool("short_stream", false, "End the balancer stream immediately after sending the first server list.")
42 serviceName = flag.String("service_name", "UNSET", "Name of the service being load balanced for.")
43
44 logger = grpclog.Component("interop")
45 )
46
47 func main() {
48 flag.Parse()
49
50 var opts []grpc.ServerOption
51 if *useTLS {
52 certFile := testdata.Path("server1.pem")
53 keyFile := testdata.Path("server1.key")
54 creds, err := credentials.NewServerTLSFromFile(certFile, keyFile)
55 if err != nil {
56 logger.Fatalf("Failed to generate credentials: %v", err)
57 }
58 opts = append(opts, grpc.Creds(creds))
59 } else if *useALTS {
60 altsOpts := alts.DefaultServerOptions()
61 altsTC := alts.NewServerCreds(altsOpts)
62 opts = append(opts, grpc.Creds(altsTC))
63 }
64
65 rawBackendAddrs := strings.Split(*backendAddrs, ",")
66 server, err := fakegrpclb.NewServer(fakegrpclb.ServerParams{
67 ListenPort: *port,
68 ServerOptions: opts,
69 LoadBalancedServiceName: *serviceName,
70 LoadBalancedServicePort: 443,
71 BackendAddresses: rawBackendAddrs,
72 ShortStream: *shortStream,
73 })
74 if err != nil {
75 logger.Fatalf("Failed to create balancer server: %v", err)
76 }
77
78
79
80 if err := server.Serve(); err != nil {
81 logger.Fatalf("Failed to start balancer server: %v", err)
82 }
83 }
84
View as plain text